在 OpenCV 中将 HSV 转换为 RGB 失败

Converting HSV to RGB fails in OpenCV

OpenCV documentation of cvtColor() 不提供有关 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

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

根据 CV_16UC3 的错误消息(除文档外),RGB/BGR=>HSV 和 HSV=>RGB/BGR[= 均不支持 16 位13=]