Python初心者 無料で学習を極める(15)
こんにちわ。前回までに映画の特徴量を数点抽出しましたね。これからあの数字がどの様に使われるのか。考える必要がありますが、、、まずはどんどんやってみたいと思います。
本日は、ついに画像を触っていこうと思います。色々な考え方があるみたいですので、まずは、色々とやってみる の精神でいきます。
私が気に入っている画像の一つがこちら!!!!
「今から行くぞ!」っと人間に対する嫌いな感情をむき出しにするサン そして、同じ方向を見つめる山犬。静止画だけど、躍動感がすごい。。
では、この画像を元に、色々と抽出していきたいと思います!
準備1:画像処理の世界に対する前置き
pythonの世界で特徴量抽出の原理がOpenCVとして公開されているようです。そもそもOpenCVって・・・・・。
インテルが開発・公開したオープンソースのライブラリ
らしいです。その為、みんなが作成した技術とかが色々とあるそうです。
色々と考える方々がいて面白いですね。まさかのロゴが、カニッツァの定理をもじったロゴだとは!!ビックリしました。ここで、各自が作成したソースを共有し、一緒にレベルを上げていく感じなんでしょうね。何て素敵な取組★それでは特徴量抽出を始めましょう!
準備2:openCVを使える環境の構築
openCVをインストールする必要があります。その為、下記のコマンドを実行し、インストールしましょう。大きく二つの構成があるそうです。どちらを使かによって、インストール方法を変える必要があるみたいです。下記のサイトに内容が記載があります。
Main modules をインストールする場合は、こちら。
pip install opencv-python
Extra modules をインストールする場合は、こちら。
pip install opencv-contrib-python
私の場合、pipが古かったみたいで更新が必要となり、下記のコマンドを打ちました。そして、再インストール★
pip install --upgrade pip
ワーニング文章
どちらのモジュールを使うべきか。は私にはわからない為、二つともまずはインストールしました。笑。
これで、環境は構築できましたね。早速してみましょう☆
特徴抽出1:エッジ検出(AKAZE)
openCVの中で、画像の特徴量抽出として、「AKAZE」が有名みたいですので、こちらを触ってみたいと思います。特徴量がカラーであると見やすいようですので、グレーにしてみたいと思います。
import cv2 as cv
# 画像を読み込み
img = cv.imread('original_photo/mononoke033.jpg')
#画像をグレーに変換
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
#画像を書込み
cv.imwrite('mod_photo/gray_mono033.jpg', gray)
すごい!!!!
3行で終わりました。そしてめっちゃ早かった。賢いですね・・・。
関数とかを調べる場合は、
help(cv.関数)
で調べて下さい。そしたら、どの様に使うのか分かります。
実際にエッジを検出したポイントを表現してみましょう。
# AKAZEの宣言
akaze = cv.AKAZE_create()
#第1引数kp :特徴点の座標等の情報
#第2引数des :特徴量記述子の情報
kp, des = akaze.detectAndCompute(gray, None)
#上で検出した特徴点を画像に着けた状態
key_img = cv.drawKeypoints(gray, kp, img)
#画像を書き込む
cv.imwrite('mod_photo/key_photo_mono033.jpg', key_img)
これまた、すごーい!!!
こんなにも簡単にできてしまうのですね。びっくりです。。。
本日は、この特徴量検出だけで時間を多くかかってしまいましたので、ここで終わりたいと思います。
次回は、
色々な特徴量検出をトライしてみましょう~(続編)
宜しくお願い致します。
よろしければサポート頂けると幸いです!子供へのパパ時間提供の御礼(お菓子)に活用させて頂きます☆