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ビットのグレースケールで保存されていました。

公開日

広告