Pythonでカラー画像をグレイスケールに変換する(OpenCV編)
Pythonのcv2モジュールを使って、カラー画像をグレイスケール画像に変換します。
目次
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で画像処理カテゴリの投稿
- Python (Pillow)でグラデーション画像を作る
- PythonでGIFアニメを作る(PILでファイルをつなげる編)
- PythonでOpenCVの画像データをMatplotlibで表示する
- PythonでPDFを画像に変換する(Windows10)
- PythonでPSDファイルをJPEGやPNGに変換する
- Pythonでカラー画像をグレイスケールに変換する(OpenCV編)
- Pythonでフォルダ内に同じ画像がないか検索してみた
- Pythonでマスク画像を作る方法(3選)
- Pythonで図形の外接矩形を描く(OpenCV編)
- Pythonで図形の輪郭の大きさを調べる(OpenCV編)
- Pythonで画像の余白を削除する(OpenCV編)
- Pythonで画像の余白を削除する(Pillow編)
- Pythonで画像の大きさやフォーマットを調べる(Pillow編)
- Pythonで画像の減色をする
- Pythonで画像をトリミングする(Pillow編)
- Pythonで画像を他の画像にペーストする(Pillow編)
- Pythonで画像を回転する(Pillow編)
- Pythonで画像を拡大縮小(リサイズ)する(Pillow編)
- Pythonで画像を読み込み、表示し、保存する(OpenCV編)
- Pythonで画像を読み込み、表示し、保存する(Pillow編)
- Pythonで画像を2値化する(OpenCV編)
- Pythonで記号の輪郭を検出する(OpenCV編)
- PythonとOpenCVで画像をグレースケールに変換してみた
- PythonとOpenCVで画像をネガポジ反転してみた