Python

OpenCVで画像ファイルの読み書きをしよう (Python)

投稿者 : OSCA

概要

 本稿ではオープンソースの画像処理ライブラリ「OpenCV」で画像ファイルを読み書きする方法について解説します。

画像ファイルの読込み

 OpenCV で画像ファイルを読込むには cv2.imread() メソッドを利用します。 具体的には、次の例のように引数に画像ファイル名を指定するだけと、とても簡単です。 また、読み込んだ画像の表示には cv2.imshow() メソッドが用意されています。

import cv2

img = cv2.imread("picture.jpg")
cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

 cv2.waitKey() メソッドは、キーボードのキーが押されるまで処理を停止するためのメソッドです。 引数で指定したミリ秒だけキーボードの入力を待ちますが、引数に「0」を指定した場合は無限にキーボードの入力を待ちます。 よって、ここでは画像を表示したあとにキーボードの入力をずっと待つようにして画像のウィンドウの表示を保っています。 画像が表示されたウィンドウにフォーカスを合わせて何かしらのキーを入力することで、次の cv2.destroyAllWindow() メソッドが呼ばれてウィンドウを閉じることができます。

 cv2.imread() メソッドには、第二引数で読込み方をフラグで指定することができます。 具体的には次のようなフラグを指定できます。

フラグ (定数) 説明
cv2.IMREAD_COLOR 画像をカラー(RGB)で読込む。 引数のデフォルト値。
cv2.IMREAD_GRAYSCALE 画像をグレースケールで読込む。
cv2.IMREAD_UNCHANGED 画像を RGB に透過度を加えた RGBA で読込む。

 よって、画像をグレースケールで読込みたい場合は、次のように指定します。

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

画像ファイルの書込み

 次に OpenCV で画像をファイルに書込む方法について解説します。 画像をファイルに書込むには、cv2.imwrite() 関数を使います。 さっそく例を示してみたいと思います。 ここでは上で解説したことを応用して、カラーの画像をグレースケール画像として書込むサンプルを示したいと思います。

import cv2

img    = cv2.imread("picture.jpg", cv2.IMREAD_GRAYSCALE)
result = cv2.imwrite("picture-gray.jpg",img)

おわりに

 本稿では OpenCV を利用して画像ファイルを読み書き・表示する方法について解説しました。 OpenCV での画像の読み書きが簡単なことを感じていただけたでしょうか?

著者 : OSCA

OSCA

 初級WEBエンジニアです。最近は Android, iOS, WEBアプリの作成に力を入れています。 個人として何か一つでも世の中の多くの人に使ってもらえるアプリを作ろうと日々奮闘中です。