Pythonで画像を読み込み、表示し、保存する(OpenCV編)
PythonのOpenCV(cv2)モジュールで、画像ファイルの読み込みと、表示と、保存をしてみます。
目次
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だけではウィンドウが開くだけで、一連の手続きが必要になります。
cv2.imshow()
cv2.waitKey()
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で画像処理カテゴリの投稿
- Python (Pillow)でグラデーション画像を作る
- PythonでGIFアニメを作る(PILでファイルをつなげる編)
- PythonでOpenCVの画像データをMatplotlibで表示する
- PythonでPDFを画像に変換する(Windows10)
- PythonでPSDファイルをJPEGやPNGに変換する
- Pythonでカラー画像をグレイスケールに変換する(OpenCV編)
- Pythonでフォルダ内に同じ画像がないか検索してみた
- Pythonでマスク画像を作る方法(3選)
- Pythonで図形の外接矩形を描く(OpenCV編)
- Pythonで図形の輪郭の大きさを調べる(OpenCV編)
- Pythonで画像の余白を削除する(OpenCV編)
- Pythonで画像の余白を削除する(Pillow編)
- Pythonで画像の大きさやフォーマットを調べる(Pillow編)
- Pythonで画像の減色をする
- Pythonで画像をトリミングする(Pillow編)
- Pythonで画像を他の画像にペーストする(Pillow編)
- Pythonで画像を回転する(Pillow編)
- Pythonで画像を拡大縮小(リサイズ)する(Pillow編)
- Pythonで画像を読み込み、表示し、保存する(OpenCV編)
- Pythonで画像を読み込み、表示し、保存する(Pillow編)
- Pythonで画像を2値化する(OpenCV編)
- Pythonで記号の輪郭を検出する(OpenCV編)
- PythonとOpenCVで画像をグレースケールに変換してみた
- PythonとOpenCVで画像をネガポジ反転してみた