問題は、それを HSV に変換する必要がある場合です。CV_BGR2HSV と CV_RGB2HSV では、異なる結果が得られます。そのため、開いたときの色の順序や、特定の順序で画像を開くimread
ように強制する方法を知る必要があります。imread
2 に答える
imreadの OpenCV ドキュメントでは、デフォルトで 3 チャネルのカラー画像の場合、データは BGR の順序で格納されます。たとえば、Mat では、データは 1D unsigned char ポインタとして格納され、インデックスの任意のカラー ピクセルpx_idx
が 3 要素になるようになっています。 [px_idx + 0]
:青チャンネル、[px_idx + 1]
:緑チャンネル、[px_idx + 2]
:赤チャンネルの順に
注意 カラー画像の場合、デコードされた画像には BGR 順に格納されたチャンネルが含まれます。
に渡す flag パラメータを介して色の種類を (限定的に) 制御imread
できますが、チャネルの順序を指定することはできません (すべてのカラー画像が BGR であると想定する必要があります)。
CV_LOAD_IMAGE_ANYDEPTH - 設定されている場合、入力に対応する深度がある場合は 16 ビット/32 ビット イメージを返し、それ以外の場合は 8 ビットに変換します。
CV_LOAD_IMAGE_COLOR - 設定されている場合、常に画像をカラー画像に変換します
CV_LOAD_IMAGE_GRAYSCALE - 設定されている場合、常に画像をグレースケールに変換します
またはもっと簡単に、
>0 Return a 3-channel color image.
(CV_LOAD_IMAGE_COLORと同じ)
=0 Return a grayscale image.
(CV_LOAD_IMAGE_GRAYSCALEと同じ)
<0 Return the loaded image as is (with alpha channel).
(CV_LOAD_IMAGE_ANYDEPTH と同じ)