OpenCV Reference

【OpenCV-Python】cvtColor(色変換)

OpenCVでカラー→モノクロ変換、カラーのデータの並びを入れ替えるBGR⇔RGB変換、色抽出の前処理として使われるHSV変換や、Bayer画像をカラー画像に変換するなど、主にカラー画像の変換を行うにはcvtColor()関数を用います。

構文

cvtColor( src, code[, dst[, dstCn]] ) -> dst

引数

src 色変換を行う画像データを指定します。
色変換を行う種類(code)に合わせた画像データを指定します。
code 色変換の種類を指定します。
cv2.COLOR_BGR2GRAYなど。詳細は別途
dstCn 出力画像のチャンネル数
この値が0のバイア、チャンネル数はsrcとcodeから自動的に求められます。
と、あるのですが、詳細は分からず。。

 

戻り値

dst 変換された画像データ

 

codeの設定について

codeの設定により、様々な色変換を指定できます。
コードのフォーマットは

変換前 2 変換後

となっています。

さらに、例えばOpenCVのカラー画像の場合、BGRと指定するように、画像データの並びの順番で色を指定する必要があります。

codeの種類は非常に多くあるのですが、個人的に使った事のある、使いそうなcodeを以下に示します。

 

COLOR_BGR2GRAY カラー画像(8bit3ch)をグレースケールの画像に変換します。
COLOR_BGRA2GRAY カラー画像(8bit4ch)をグレースケールの画像に変換します。
COLOR_GRAY2BGR グレースケールの画像をカラー画像(8bit3ch)に変換します。
B,G,Rの値はすべてGRAYの値と同じ
COLOR_GRAY2BGRA グレースケールの画像をカラー画像(8bit4ch)に変換します。
B,G,Rの値はすべてGRAYの値と同じ
Aの値は255
COLOR_BGR2RGB OpenCVのカラー画像(BGR)のデータの並びをR,G,Bの順に変換します。
他のPythonモジュールとデータの受け渡し時に用います。
COLOR_RGB2BGR データの並びがR,G,B順のカラー画像をOpenCVのカラー画像(BGR)に変換します。
COLOR_BGR2HSV カラー(BGR)からHSVに変換します。
色相(Hue)の値は0~360°で計算されますが、R,G,Bの各データが8bitのとき値が0~255の範囲なので、Hueの値は半分の0~128となります。
COLOR_HSV2BGR HSVからカラー(BGR)に変換します。
Hueの値は0~360°の半分の0~180で指定する必要があります。
COLOR_BGR2HSV_FULL カラー(BGR)からHSVに変換します。
色相(Hue)の値は0~360°で計算されますが、R,G,Bの各データが8bitのとき値が0~360°の値を0~255に均等に割り振られます。
COLOR_HSV2BGR_FULL HSVからカラー(BGR)に変換します。
Hueの値は0~360°の値を0~255に均等に割り振られた値で指定する必要があります。
COLOR_BGR2YUV カラー(BGR)からYUVに変換します。
COLOR_YUV2BGR YUVからカラー(BGR)に変換します。
COLOR_BayerBGGR2BGR Bayerパターンからカラー(BGR)に変換します。
COLOR_BayerGBRG2BGR Bayerパターンからカラー(BGR)に変換します。
COLOR_BayerRGGB2BGR Bayerパターンからカラー(BGR)に変換します。
COLOR_BayerGRBG2BGR Bayerパターンからカラー(BGR)に変換します。

他のコードの種類については、下記ページを参照ください。

OpenCV: Color Space Conversions

色変換式については下記ページを参照してください。

OpenCV: Color conversions

 

サンプルプログラム

カラー(BGR)→モノクロ(GRAY)変換を行った例を以下に示します。

import cv2

# 画像ファイルの読込
src = cv2.imread("Mandrill.bmp", cv2.IMREAD_UNCHANGED)

# カラー(BGR)→モノクロ(GRAY)変換
dst = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

# 処理前画像の表示
cv2.imshow("Src Image", src)
# カラー→モノクロ変換後の画像表示
cv2.imshow("COLOR_BGR2GRAY", dst)

# キー入力待ち
cv2.waitKey()

実行結果

OpenCV Python cvtColor 色変換

 

参照ページ

OpenCV: Color Space Conversions
OpenCV: Color Space Conversions
OpenCV: Color conversions
【OpenCV-Python】デモザイキング(Bayer変換)
デモザイキング(Demosaicing)とは、一般的なカラーカメラでは、センサの各画素に下図のようなBayerパターンと呼ばれる配置で、フィルタが配置されています。 この状態で画像を撮影すると、画像そのものはモノクロ画像の市松模様のようなノ...
【OpenCV-Python】cvtColorでBayer変換するときの定数
一般的なカラーカメラでは、モノクロのセンサの各画素にBayerと呼ばれるパターンのカラーフィルタが配置された状態で、画像を撮影しています。 このパターンはGRBG(詳細は後述) このフィルタが配置された状態で撮影した画像は、下図のように、市...

コメント

タイトルとURLをコピーしました