Pythonで画像を読み込み、表示し、保存する(OpenCV編)

PythonのOpenCV(cv2)モジュールで、画像ファイルの読み込みと、表示と、保存をしてみます。

目次

  1. OpenCV-Pythonのインストール
  2. 画像の読み込み方法
  3. 画像の表示方法
  4. 画像をファイルに出力する方法

OpenCV-Pythonのインストール

OpenCVといえば有名な画像処理ライブラリですが、 Pythonでもpipで利用できるように なりました。

> pip install opencv-python

このモジュールをインポートするときはcv2という名前でインポートします。

>>> import cv2

画像の読み込みと、表示と、保存をしてみます。

画像の読み込み方法

imreadというメソッドで画像ファイルの読み込みをします。

retval = cv2.imread(filename, [flags])
変数 内容
filename str 画像ファイルのパス。
flags   省略可。既定値はIMREAD_COLOR。読み込み方法の指定。
retval ndarray 画像データ。

flagsに読み込むときの方法を規定します。下表の他にもありますので、 公式 を参照してください。

IMREAD_COLOR アルファチャンネル無しのカラー画像
IMREAD_GRAYSCALE グレイスケール画像
IMREAD_UNCHANGED アルファチャンネル付き画像

読み込んだデータそのものはndarrayになります。

画像の表示方法

imshowメソッドで新しいウィンドウを開いて表示するのですが、imshowだけではウィンドウが開くだけで、一連の手続きが必要になります。

  1. cv2.imshow()
  2. cv2.waitKey()
  3. cv2.destroyAllWindows()
cv2.imshow(winname, mat)
変数 内容
winname str ウインドウ名。
mat ndarray 画像データ。
cv2.waitKey([delay])
変数 内容
delay int 省略可。既定値は0。キー入力待ち時間をミリ秒単位で指定する。
cv2.destroyAllWindows()

cv2モジュールで開いたウィンドウを全て閉じるメソッドです。

試してみましょう。 プロ生ちゃん の画像をimreadで読み込んでimshowで表示してみます。

import cv2

im = cv2.imread('original.png')
cv2.imshow('test', im)
cv2.waitKey()
cv2.destroyAllWindows()

print(im.shape)
表示例

コンソールへの出力はこうなります。

(256, 256, 3)

カラーっぽい行列になってますね。

では同じ画像ファイルをグレースケールモードで読み込んでみましょう。

import cv2

im = cv2.imread('original.png', cv2.IMREAD_GRAYSCALE)
cv2.imshow('test', im)
cv2.waitKey()
cv2.destroyAllWindows()

print(im.shape)
グレイスケール表示例

コンソールへの出力はこうなります。

(256, 256)

各画素1バイトのグレースケールっぽい行列になってますね。

画像をファイルに出力する方法

imwriteメソッドで画像をファイルに出力します。

cv2.imwrite(filename, img, [param])
変数 内容
filename str 画像ファイルのパス。
img ndarray 画像データ。
param   省略可。画像フォーマット固有の保存オプション。

paramには、画像フォーマット毎に特有なオプションのパラメータを指定します。詳しくは 公式のリスト を参照してください。

では、先ほどのプロ生ちゃんのカラー画像をグレースケールモードで読み込んで、そのままPNGファイルとして出力してみましょう。

import cv2

im = cv2.imread('original.png', cv2.IMREAD_GRAYSCALE)
cv2.imwrite('gray.png', im)
出力結果

画像ファイルのプロパティを確認すると、確かに各画素8ビットのグレースケールで保存されていました。

広告

Pythonで画像処理カテゴリの投稿