2017-05-09 32 views
0

OpenCV documentationcvtColor()は、HSVからBGRへの変換に関する情報は提供していません。 16ビット画像のRGBからHSVへの変換はサポートされていません。HSVからRGBへの変換がOpenCVで失敗する

ピクセルあたり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

'でいっぱい?ピクセル値をどこに割り当てるのか分かりません。 –

+0

opencvはHSVの色相値を範囲0..180にすると仮定しています。なぜなら、初期化されていない値がもっと大きいのでしょうか? 16ビットがサポートされていないとdocが伝えたら、なぜ16ビットを試してみますか?サポートされていないものが必要な場合は、opencvのソースコードを調整できます(オープンソースです)! – Micka

+0

@Micka Documentは、16ビット画像ではRGBからHSVへの変換はサポートされていませんが、HSVからRGBへの変換については何も言及していません。また、RGBからHSVへの変換は32ビット画像でもサポートされていますが、32ビットのHSVからRGBへの変換ではランタイムエラーも発生します。 – Melike

答えて

2

代わりのCV_32Fあなたは3つのチャネルを必要とするのでCV_32FC3を使用する必要があります。

CV_16UC3のための(ドキュメントに加えて)あなたのエラーメッセージによると、16ビットのRGB/BGR => HSVのためにもためにサポートされていないどちらもHSV => RGB/BGR

`HSVのピクセルは何
+0

thx! – Micka

関連する問題