在OpenCV中将HSV转换为RGB失败

时间:2017-05-09 13:50:35

标签: c++ opencv rgb hsv

cvtColor()的OpenCV documentation未提供有关HSV到BGR转换的信息。它表示不支持从16位图像转换为RGB到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:\InstalledPrograms\opencv_3.1\sources\modules\imgproc\src\color.cpp

1 个答案:

答案 0 :(得分:2)

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

根据CV_16UC3的错误消息(除了文档),RGB / BGR => HSV和HSV => RGB / BGR

都不支持16位