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