画像を読み込み、可視化する方法
Pythonでは画像処理も簡単にできます。
OpenCVというモジュールをインポートすると、画像処理が可能に。
変数の中に画像を格納することや、画像を簡単に二次元のnumpyアレイにしてくれ、非常に扱いやすくなります。
本日は、その基礎の基礎。
画像を読み込み、可視化しましょう。
目的の画像
イラスト屋の画像を使わせてもらっています。この画像で、柄を二値化したいとします。
かわいいですね。
必要なモジュールをインポート
さて、モジュールのインポート。私はJupiternotebookを使っているため、cv2だけでなくその他もインポート。
%pylab inline
import cv2
import matplotlib.pyplot as plt
plt.gray()
一応、モジュールの確認もしておきましょう
・%pylab inline:plt.show()を書かなくても画像が見られる等、扱い易いため
・cv2:OpenCV(画像解析に必要)
・matplotlib.pyplot : Jupiternotebookでグラフや画像を表示するもの
・plt.gray(): 白黒画像が変色ナシで可視化できる
サラッと流してみました。気になる方は詳細をググってみてください。
分からなければ、飛ばすのも一つです。
画像を読み込み(カラー・グレイスケール)、確認
カラー画像を読み込みます。
image = cv2.imread("/irasutoya.jpg")
imageという変数の中に、画像を読み込みます。
要するに、imageという変数を加工すれば、画像が編集されます。
尚、(”○○/○○.jpg”)の○○の中には、画像が入っている場所を指定してください。
カラー画像の可視化方法です。可視化は、
plt.imshow(写真を入れた変数の名前)
plt.show()
でできます。
今回、『%pylab inline』を先にモジュールと一緒に指定しているため、plt.show()がなくても表示されます。
plt.imshow(image)
plt.show()
実行結果:
あら。先ほどと色が違う・・
cv2で読み込んだ画像はBGRフォーマットになっており、matplotlibではRGBフォーマットで読み込まれるためmatplotlibに渡す前にRGBに変更が必要です。
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
で変換するか、可視化の際に、
plt.imshow(cv2.cvtColor(image,cv2.COLOR_BGR2RGB))
で確認するか・・
どちらでも大丈夫です。
グレースケールで読み込む
グレースケール、白黒のことです。
白黒で読み込む際にも、cv2.imread()を使います。
ちなみに、cv2というモジュールを使った、.imread()メソッド関数ということです。後ろに0を足すと、グレースケールで取得できます。
image_g = cv2.imread("/irasutoya.jpg",0)
shift+ENTERで実行した後、以下で表示してみましょう。
plt.imshow(image_g)
plt.show()
実行結果:
うん。大丈夫です。
あれっ・・思ってたんと違う・・
という緑と黄色の場合は、モジュール群に書いた、
plt.gray()
がないのでは。足しておくとちゃんと白黒になります。