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
'でいっぱい?ピクセル値をどこに割り当てるのか分かりません。 –
opencvはHSVの色相値を範囲0..180にすると仮定しています。なぜなら、初期化されていない値がもっと大きいのでしょうか? 16ビットがサポートされていないとdocが伝えたら、なぜ16ビットを試してみますか?サポートされていないものが必要な場合は、opencvのソースコードを調整できます(オープンソースです)! – Micka
@Micka Documentは、16ビット画像ではRGBからHSVへの変換はサポートされていませんが、HSVからRGBへの変換については何も言及していません。また、RGBからHSVへの変換は32ビット画像でもサポートされていますが、32ビットのHSVからRGBへの変換ではランタイムエラーも発生します。 – Melike