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
答案 0 :(得分:2)
您必须使用CV_32F
而不是CV_32FC3
,因为您需要3个频道。
根据CV_16UC3
的错误消息(除了文档),RGB / BGR => HSV和HSV => RGB / BGR