スポンサーリンク

【最短】OpenCVでグレースケール画像としてcv2.imreadで読み込み、cv2.imwriteで保存する【Python】

Image

OpenCVで、カラー画像をグレースケール画像として読み込むには、cv2.imreadを使う。また保存は、cv2.imwriteを使う。

今回、用いるサンプル画像をWEBからダウロードと保存をし、画像を表示します。保存した画像はカラー画像であることが確認でき、ndarray型三次元の配列になっています。

import requests

url = "https://github.com/opencv/opencv/blob/master/samples/data/butterfly.jpg?raw=true"
file_name = "butterfly.jpg"

response = requests.get(url)
image = response.content

with open(file_name, "wb") as f:
    f.write(image)

img = cv2.imread("butterfly.jpg")
print(type(img))
# <class 'numpy.ndarray'>
print(img.shape)
# (356, 493, 3)
cv2_imshow(img) # Google colabでない場合は、cv2.imshowを使う

グレースケールとして画像を読み込み、保存

cv2.imreadでカラー画像をグレースケール画像として読み込む

cv2.imreadの第一引数に画像のpath、第二引数にcv2.IMREAD_GRAYSCALEを指定することで、カラー画像をグレースケール画像として読み込めます。読み込んだ変数は、ndarray型の二次元配列となる。

import cv2
from google.colab.patches import cv2_imshow # Google colab用

img = cv2.imread("butterfly.jpg", cv2.IMREAD_GRAYSCALE)

print(type(img))
# <class 'numpy.ndarray'>
print(img.shape)
# (356, 493)
cv2_imshow(img) # Google colabでない場合は、cv2.imshowを使う

cv2.imwriteでグレースケール画像として保存する

cv2.imwriteの第一引数にファイル名を指定、第二引数にndarray型の配列を指定する。第二引数のndarray型の配列が二次元であればグレースケール画像として保存される。

cv2.imwrite("butterfly_gray.jpg", img)

img = cv2.imread("butterfly_gray.jpg")

cv2_imshow(img) # Google colabでない場合は、cv2.imshowを使う

関連記事、参考記事

コンピュータビジョンライブラリの定番、OpenCVによる画像・動画処理をPythonで行う方法について解説した書籍。ディープラーニングを利用した解析の例も紹介しています。
Pythonで始めるOpenCV 4プログラミング

コメント