Python-OpenCVでカラー画像をグレイスケールに変換

python コンピュータ
python

画像を加工する場合グレイスケールの方が都合がよい場合が多いので、PythonとOpenCVでカラー画像をグレイスケールに変換する方法を調べてみました。

#!/usr/bin/env python3
# coding: utf8

# 
# グレイスケールに変換
# 

import cv2
import numpy as np

src_file = "00184.jpeg"

# カラーで読み込み
im = cv2.imread(src_file, cv2.IMREAD_COLOR)
print(im.shape)
# (1200, 846, 3) 高さ1200 幅846 24ビットカラー(3バイト) 

# グレイスケールに変換
im = cv2.cvtColor(im, cv2.COLOR_RGB2GRAY)
print(im.shape)
# (1200, 846)

# グレイスケールで読み込み
im = cv2.imread(src_file, cv2.IMREAD_GRAYSCALE)
print(im.shape)
# (1200, 846)

まずカラーで読み込んでcvtColor()でグレイスケールに変換します。
確認のためim.shape出力しています。
カラーの場合高さ、幅、チャンネル数が並びます。(幅、高さ…ではない)
グレイスケールの場合高さ、幅が出力されました。(戻り値が可変)
ということは、高さ、幅のみ取得の場合はim.shape[:2]

次に、読み込み時cv2.imreadのオプションでグレイスケールを指定する方法です。
1行で済みますし、画像のフォーマットなどを考えずにグレイスケールで読み込んでくれるようなのでかなり便利そうです。

コメント