OpenCVを使うことでPythonでも画像認識をすることができます。画像認識といってもできることは幅広く、網羅するのは大変です。本サイトでは、Pythonでできる画像認識、画像処理について、初歩的なところから少しづつ幅を広げられるように記事を書いていきたいと思います。
今回は1回目ということで、画像を読み込む、プログラムで表示する、書き出すといったところをまとめていきます。
OpenCVとは
OpenCVはインテルが開発し公開しているオープンソースの画像処理ライブラリです。現在も開発が続けられており、様々な言語で利用可能になっています。
また、OpenCVを利用した物体検知や人物検知のプログラムも多数公開されており、手軽に画像認識を楽しむこともできます。
Pythonで画像認識をはじめる
前置きもこの辺に、早速Pythonでの画像認識をスタートさせます。
OpenCVのインストール
まずはOpenCVをインストールします。他のライブラリとの衝突等防ぐために、画像処理用の仮想環境を作成しておくことをおすすめします。
Anaconda での仮想環境の作り方↓↓
pip を使ったインストールは以下の通りです。
pip install opencv-python
pip install opencv-contrib-python
Anacondaでのインストールは以下の通りです。
conda install -c conda-forge opencv
使用する画像
今回表示したり保存する画像は以下のものを使用します。
おしゃれな写真。
そして、プログラムと画像は同じディレクトリにあるという前提です。もちろん、画像のパスは任意に指定できます。
画像の読み込み
早速プログラムで画像を読み込んでいきます。
OpenCVをインポートするときは、import cv2とします。画像の読み込みはimread()メソッドを用います。
import cv2
#画像の読み込み
img = cv2.imread("photoA.jpg")
imgの中身は3次元配列です。
画像の表示
次は、プログラム内で画像を表示してみます。画像の表示にはimshow()メソッドを用います。
imshow()を呼ぶと、新規ウィンドウが立ち上がって画像が表示されます。
import cv2
#画像の読み込み
img = cv2.imread("photoA.jpg")
#画像のサイズ変更
height = img.shape[0]
width = img.shape[1]
resized_img = cv2.resize(img,(round(width/4), round(height/4)))
#画像をウィンドウで表示
cv2.imshow("sample", resized_img)
#おまじない
cv2.waitKey(0)
cv2.destroyAllWindows()
元画像が大きかったので表示前にサイズを小さくしています。
imshow()では1つ目の引数でウィンドウ名を、2つ目の引数で画像を指定します。
waitKey(0)は、キーが押されるまでウィンドウを表示し続ける記述です。またプログラムの最後には destroyAllWindows() を呼んで全てのウィンドウを破棄します。
画像の保存
次は画像を保存します。画像の保存にはimwrite()を用います。
import cv2
#画像の読み込み
img = cv2.imread("photoA.jpg")
height = img.shape[0]
width = img.shape[1]
resized_img = cv2.resize(img,(round(width/4), round(height/4)))
#画像をウィンドウで表示
cv2.imshow("sample", resized_img)
#画像をグレースケールに変換
img_gray = cv2.cvtColor(resized_img, cv2.COLOR_BGR2GRAY)
#画像の保存
cv2.imwrite("gray_img.jpg", img_gray)
cv2.waitKey(0)
cv2.destroyAllWindows()
imwrite()では第1引数に出力先パスを、第2引数に対象画像を指定します。今回はプログラムの処理を挟んでいることがわかるように、画像をグレースケールに変換してから画像出力しています。
OpenCVの学習におすすめ書籍
PythonでOpenCV始めてみようという方におすすめなのが以下書籍です。実装例も豊富なので、1からコードを書かずとも学習を進めることができます。
オライリーの1冊は読み物というより辞書としての利用におすすめです。お値段結構しますが、細かい情報までしっかりと詰め込まれています。
まとめ
OpenCVを使った画像の読み込み、表示、保存方法を紹介しました。今回の内容はPythonを使った画像処理の第1歩です。
本サイトでも、これから画像処理についていろいろと投稿していければと思います!
OpenCVの基礎を身につけるためのロードマップは以下を参考にしてください。
ではでは👋