OpenCV documentation of cvtColor()
没有提供关于HSV到BGR转换的信息。它说,不支持从RGB到16位图像的HSV转换。在OpenCV中将HSV转换为RGB失败
我需要将每像素超过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
什么是在'HSV像素“充满?我没有看到你分配像素值的位置 –
opencv假定(默认)HSV的色调值在范围0..180内,所以你的未初始化的值可能更大?如果doc说16位不支持,为什么你会尝试16位?!?如果你需要不支持的东西,也许你可以调整opencv源代码(它是开源的!)! – Micka
@Micka文档说,从RGB到HSV的转换不支持16位图像,但它没有提到从HSV到RGB的转换。它还表示,支持32位图像的RGB到HSV转换,但它也会给32位的HSV到RGB转换带来运行时错误。 – Melike