Pythonでカラー画像をグレイスケールに変換する(OpenCV編)

Pythonのcv2モジュールを使って、カラー画像をグレイスケール画像に変換します。

目次

  1. OpenCVでグレイスケールに変換する方法
  2. グレイスケールへの変換例

OpenCVでグレイスケールに変換する方法

PythonのOpenCV(cv2)ではカラー画像のデータはBGRのndarrayになっています。グレースケールもndarrayのデータになります。NumPyで変換することも出来ますが、cvtColorメソッドを使う方が楽でしょう。

カラーからグレイスケールの変換にはいくつか方法があるのですが、cvtColorでの変換は次の式に基いて変換されます。

Y = 0.299 * R + 0.587 * G + 0.114 * B

グレイスケール変換するときの書式は次の通りです。

dst = cv2.cvtColor(src, code)
変数 内容
src ndarray 変換元の画像データ。
code   変換コード。COLOR_BGR2GRAY。
dst ndarray 変換後の画像データ。

グレイスケールへの変換例

プロ生ちゃん のカラー画像を読み込んで、グレイスケールに変換したものと、読み込んだままのものを出力してみます。

読み込むデータはこちらです。

元画像

コードはこんな感じです。

import cv2

im = cv2.imread('original.png', cv2.IMREAD_COLOR)

im_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)

cv2.imwrite('color.png', im)
cv2.imwrite('gray.png', im_gray)

読み込んだままの出力はこうなります。

カラー画像

グレイスケールに変換したものの出力はこうなります。

グレイスケール画像

広告

Pythonで画像処理カテゴリの投稿