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型の二次元配列となる。
- imread() – OpenCV Flags used for image file reading and writing
- ImreadModes – OpenCV Flags used for image file reading and writing
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プログラミング
コメント