ITいろいろ

プログラミングやクラウド、データ解析など、ITにかかわることをいろいろと書いています。

OpenCV、Pillowそれぞれでグレースケール変換

前回までは画像の回転について書いていきましたが、今回は色調についても触れていきたいと思います。 単純な画像はPillowの方が使いやすいのですが、今後機械学習などを使うことを考えるとOpenCVの使い方も覚えた方がよいと思いますので、両方のやり方を記述していこうと思います。

OpenCVを使う方法

コードの紹介

# インポート
import cv2

# 画像ファイルの読み込み
img = cv2.imread("Lenna.jpg")

# グレースケールに変換
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 読み込んだ画像の出力。
cv2.imshow('Lenna_gray', img_gray)


# 何かのキーを入力待ちする。64bitのマシンの場合は「& 0xFF」が必要らしい
cv2.waitKey(0) & 0xFF
# ウィンドウを閉じる
cv2.destroyAllWindows()

出力結果

その他の画像変換

VS Codeでcv2.color_bgrと打つと、候補がいろいろと出てきます。 いろいろな変換ができるようですが、この辺りはまだ無知なので割愛。。

少し解説

BGR2xxxはBGR(青、緑、赤)の色調をxxxに変える、という意味になります。BGR2GRAYであればBGRをグレースケールに変換、という意味です。 ここで注意なのは、OpenCVRGBではなくBGRが基本になります。一般的にはRGBが多いので、少し厄介ですね。

Pillowを使う方法

コードの紹介

# インポート Pillow(PIL)の中のImageモジュールを使う
from PIL import Image

# 画像ファイルの読み込み
img = Image.open("Lenna.jpg")

# グレースケールに変換
img_gray = img.convert('L')

# 表示
img_gray

出力結果