【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)に変換します。

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

https://docs.opencv.org/4.8.0/d8/d01/group__imgproc__color__conversions.html#ga4e0972be5de079fed4e3a10e24ef5ef0

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

https://docs.opencv.org/4.8.0/de/d25/imgproc_color_conversions.html

 

サンプルプログラム

カラー(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()

実行結果

 

参照ページ

https://docs.opencv.org/4.8.0/d8/d01/group__imgproc__color__conversions.html#ga397ae87e1288a81d2363b61574eb8cab

https://docs.opencv.org/4.8.0/d8/d01/group__imgproc__color__conversions.html#ga4e0972be5de079fed4e3a10e24ef5ef0

https://docs.opencv.org/4.8.0/de/d25/imgproc_color_conversions.html

【OpenCV-Python】デモザイキング(Bayer変換)

【OpenCV-Python】cvtColorでBayer変換するときの定数

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください