将HSV转换为RGB在OpenCV中失败

Converting HSV to RGB fails in OpenCV

本文关键字:OpenCV 失败 RGB HSV 转换      更新时间:2023-10-16

cvtColor()的OpenCV文档没有提供有关HSV到BGR转换的信息。它说不支持从RGB到16位图像的HSV转换。

我需要将每像素超过 8 位(16 位或 32 位即可(的 HSV 图像转换为 RGB 图像。下面的代码给出了运行时错误。

cv::Mat hsv(10, 10, CV_16UC3, cv::Scalar(0)); // same in cv::Mat hsv(10, 10, CV_32F);
cv::Mat rgb(hsv.size(), hsv.type());
cv::cvtColor(hsv, rgb, cv::COLOR_HSV2BGR);

这是运行时错误

OpenCV Error: Assertion failed (scn == 3 && (dcn == 3 || dcn == 4) && (depth == CV_8U || depth == CV_32F)) in cv::ipp_cvtColor, file C:InstalledProgramsopencv_3.1sourcesmodulesimgprocsrccolor.cpp

而不是CV_32F你必须使用CV_32FC3,因为你需要3个通道。

根据您的错误消息(除了文档之外(,CV_16UC3 的 RGB/BGR=>HSV 和 HSV=>RGB/BGR 都不支持 16 位