log/20250422/佐藤綺羅

画像の色変換

cv2.cvtColor関数

色にはRGBやHSVなどの複数の表現手法(色空間)がある。
openCVではcv2.cvtColorという関数を用いて、画像の色空間を変換することができる。

cv2.cvtColor(入力画像, code, dst, dstCn)

引数は以下の通り。

入力画像(必須)入力画像
code(必須)色空間変換コード
dst(任意)出力画像。指定された場合、結果がこの変数に格納される。指定されない場合は、新しい配列が作成されて結果が格納され戻り値として取得できる。
dstCn(任意)出力画像のチャンネル数

codeには以下のようなものがある。

cv2.COLOR_BGR2RGBBGRからRGBへチャンネルの並びを変換する。
cv2.COLOR_BGR2GRAYBGRからグレースケールに変換する。
cv2.COLOR_BGR2XYZBGRからXYZに色空間を変換する。
cv2.COLOR_BGR2HSVBGRからHSVに色空間を変換する。色相(H)のレンジは8bit画像の場合、0〜180。
cv2.COLOR_BGR2LabBGRからLab*に色空間を変換する。
cv2.COLOR_BGR2LuvBGRからLuv*に色空間を変換する。
cv2.COLOR_BGR2HLSBGRからHLSに色空間を変換する。色相(H)のレンジは8bit画像の場合、0〜180。
cv2.COLOR_HSV2BGRHSVからBGRに色空間を変換する。色相(H)のレンジは8bit画像の場合、0〜180。
cv2.COLOR_HLS2BGRHLSからBGRに色空間を変換する。色相(H)のレンジは8bit画像の場合、0〜180。
cv2.COLOR_BGR2YUVBGRからYUVに色空間を変換する。

これらはあくまで一例であり、実際にはより多数の色空間変換コードが存在する。

グレー化

以下に画像のグレー化を行うプログラムの実行例を示す。

#!/usr/bin/python

import cv2

img = cv2.imread("neko.jpeg")
gimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

cv2.imshow("neko", gimg)
cv2.waitKey(0)

実行結果
neko_gray.png
なお、5行目の記述を

img = cv.2imread("neko.jpeg", 0)

とすることでもグレー画像の取り込みは可能だが、取り込んだ時点でグレー画像しか扱えなくなる。
cvtColor関数を用いた場合、カラー画像の情報が格納された変数imgと、グレー画像の情報が格納された変数gimgの2つが扱えるようになるため、こちらの方が無難である。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS