Pythonは画像を簡単に取り込んで遊べます。
Pythonで画像の読み方を知ることで、画像処理や画像データに対する機械学習モデルの学習ができるようになります。
画像処理とは
画像処理とは、画像に何らかの処理を施すことで、より美しい画像を得たり、画像から有用な情報を抽出したりすることです。
画像処理の分野は、今後急速に発展していく分野です。
画像処理では、画像中の物体の検出が可能で、自動運転車から医療分野での腫瘍検出まで幅広く応用されています。
イメージって何?
というのは無茶な質問だ。
もちろん、画像とは何かはご存じでしょう。
むしろ、「機械にとっての画像とは何か」という質問の方が適切だろう。
あなたが画像として見ているものは、実はコンピュータにとっては2Dの行列なのです。
デジタル画像は、ピクセルの組み合わせとして保存されています。
各ピクセルはさらに、異なる数のチャンネルを含んでいます。
グレースケール画像なら1画素だけですが、カラー画像は赤、緑、青の3つのチャンネルを持っています。
各ピクセルの各チャンネルは0から255の間の値を持っています。
赤、緑、青を異なる割合で組み合わせることで、どんな色でも作ることができます。
この記事もチェック:PythonとOpenCVを使って画像分割|二値化やグレースケールの変換等を解説
PythonでOpenCVを使って画像を読み込む
この記事では、OpenCVライブラリを使用してPythonで画像を読み取る方法を学びます。
OpenCVは、主にリアルタイムコンピュータビジョンを目的としたプログラミング関数の、オープンソースのコンピュータビジョン・機械学習ソフトウェアライブラリです。
1. OpenCVライブラリのインストール
以下のようにpipコマンドでインストールします.
pip install opencv-python
|
import cv2
|
OpenCV を Python プロジェクトで利用するためには,インポートする必要があります.インポートするには,以下の行を使用します.
img = cv2.imread( 'image_path' )
|
2. 画像を読み込むプログラミング
OpenCV を用いて画像を読み込むには,以下のコードを使用します.
print (img)
|
これで,変数 img はピクセル値の行列になります.これをプリントすれば、RGBの値を見ることができます。
この例で使用する画像は以下の通りです。
import cv2
#read img = cv2.imread( 'sample_image.jpg' )
#show print (img)
|
行列を印刷するには、次のようにします。
ccv2.imshow( 'image' ,img)
cv2.waitKey( 0 )
cv2.destroyAllWindows() |
3. PythonでOpenCVを使って画像を読み込む実装の完成形
完全なコードは以下の通りです。
import cv2
#read img = cv2.imread( 'sample_image.jpg' )
#show cv2.imshow( 'image' ,img)
cv2.waitKey( 0 )
cv2.destroyAllWindows() |
結果は以下の通りです。
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
|
この記事もチェック:PythonとOpenCVで画像の特徴量抽出・照合を実装する方法
Python OpenCVによる画像の表示
OpenCV を用いて画像を表示するには,以下の行を使用します.
#read img = cv2.imread( 'sample_image.jpg' )
#to grayscale gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#show print (gray_image)
cv2.imshow( 'image' ,gray_image)
cv2.waitKey( 0 )
cv2.destroyAllWindows() |
cv2.waitKey() は,キーボードバインディング関数です.引数は,ミリ秒単位の時間です.
この関数は,指定されたミリ秒の間,キーボードイベントが発生するのを待ちます.その間に何らかのキーが押されれば、プログラムは続行されます。
0を渡すと、キー入力があるまで無期限に待ちます。
この記事もチェック:PythonとOpenCVを使って画像中のキーポイントを取得する方法
Pythonの実装
画像を表示するための完全なコードは以下の通りです。
cv2.imwrite( 'sample_grayscale.jpg' ,gray_image)
|
Python OpenCVを用いた画像処理
OpenCVには,画像を操作するための多くの機能があります.ここでは,画像をグレースケールにする方法について見ていきます.
グレースケール画像とは,各ピクセルが0から255の値を持つ1つのチャンネルだけを持つことを意味します.
これを行うためのコードは :
import cv2
#read img = cv2.imread( 'sample_image.jpg' )
#to grayscale gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#show print (gray_image)
#save cv2.imwrite( 'sample_grayscale.jpg' ,gray_image)
|
この記事もチェック:Pythonによる画像の強度変換操作 OpenCV
Pythonコードの実装
画像をグレースケールにするための完全なコードは以下の通りです。
この行列の次元は、カラー画像の行列とは異なることがわかります。
操作した画像ファイルを保存する
操作後のイメージを保存するには、以下のコードを使用します。
第一引数にファイル名、第二引数に保存したい画像を格納した変数を指定します。
ここでは、上で作成したグレースケールの画像を保存しています。
カラー画像をグレースケールにするための完全な Python コード
画像を保存するための完全なコードは以下の通りです。
まとめ
この記事では、PythonでOpenCVを使って画像を読み、操作する方法について説明しました。
OpenCV をより深く知るには、そのドキュメントを読んでください。