PythonとOpenCVを使用して画像の色空間を変換する方法について説明します。それぞれのバージョンはPython 3.10.4、OpenCV 4.5.5になります。
OpenCVで色空間の変換処理
OpenCVではcvtColor
という色空間の変換処理を行う関数が実装されています。引数に変換前後の色空間を指定することで、様々な色空間への変換を行うことができます。
cvt_img = cv2.cvtColor(src_img, cv2.COLOR_BGR2GRAY)
上記のコードは、BGR色空間からグレースケールに変換する例です。
色空間変換コードの種類
OpenCVでは様々な色空間への変換ができるように200以上の変換コードが実装されています。以下に一部の変換コードとそれに対応する逆変換コードを記載します。
- BGRをグレースケールに変換:
cv.COLOR_BGR2GRAY
,cv.COLOR_GRAY2BGR
- BGRにアルファチャンネルを追加:
cv.COLOR_BGR2BGRA
,cv.COLOR_BGRA2BGR
- BGRをHSVに変換:
cv.COLOR_BGR2HSV
,cv.COLOR_HSV2BGR
- BGRをLabに変換:
cv.COLOR_BGR2Lab
,cv.COLOR_Lab2BGR
- BGRをLuvに変換:
cv.COLOR_BGR2Luv
,cv.COLOR_Luv2BGR
- BGRをHLSに変換:
cv.COLOR_BGR2HLS
,cv.COLOR_HLS2BGR
- BGRをYUVに変換:
cv.COLOR_BGR2YUV
,cv.COLOR_YUV2BGR
- BGRをXYZに変換:
cv.COLOR_BGR2XYZ
,cv.COLOR_XYZ2BGR
- BGRをYCrCbに変換:
cv.COLOR_BGR2YCrCb
,cv.COLOR_YCrCb2BGR
実装例
以下に実際の実装例を示します。
import cv2
def main():
src_img = cv2.imread('input.png')
if src_img is None:
raise Exception('Image not found')
cvt_img = cv2.cvtColor(src_img, cv2.COLOR_BGR2GRAY)
cv2.imwrite('output.png', cvt_img)
if __name__ == "__main__":
main()
このコードは、入力画像をグレースケールに変換し、出力画像として保存します。
以上がPythonとOpenCVを使用した色空間の変換についての基本的な説明となります。色空間の変換は画像処理において重要なステップであり、様々な応用が可能です。.