Symfoware

Symfowareについての考察blog

OpenCV 2.4.9 + py-opencvでキーポイントの検出

FreeBSDにOpenCV + py-opencvをインストールして、顔を検出してみました。
FreeBSD + OpenCV 2.4.9 + py-opencvで顔認識

今回は画像の特徴点であるキーポイントを検出してみます。


SIFT



こちらを参考にSIFTというアルゴリズムを使用するプログラムを書いたのですが動作せず。
Introduction to SIFT (Scale-Invariant Feature Transform)

こんなエラーが発生します。


# python sample.py
Traceback (most recent call last):
File "sample.py", line 16, in <module>
    sift = cv2.SIFT()
AttributeError: 'module' object has no attribute 'SIFT'




こちらを見てみると、SIFTはnonfree moduleとなっています。
common_interfaces_of_feature_detectors

じゃあということで、


cv2.GFTT()



としてもエラーになりました。



FeatureDetector_create



こちらが参考になりました。
Test various OpenCV feature detectors in Python (Python recipe)

どうも呼び出し方が変わったようで、


cv2.FeatureDetector_create("GFTT")



これでオブジェクトの作成が行えました。




検出サンプル



この画像のキーポイントを検出してみます。

492_01.png

ソースはこうなりました。


  1. # -*- coding:utf-8 -*-
  2. import numpy
  3. import cv2
  4. image_path = 'miku.jpg'
  5. # ファイル読み込み
  6. img = cv2.imread(image_path)
  7. # グレースケール変換
  8. gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
  9. # キーポイントの検出
  10. # sift = cv2.SIFT()
  11. gftt = cv2.FeatureDetector_create("GFTT")
  12. kp_list = gftt.detect(gray)
  13. # いくつキーポイントが見つかったか
  14. print len(kp_list)
  15. # キーポイントを画像に上書きして保存
  16. img=cv2.drawKeypoints(img,kp_list)
  17. cv2.imwrite('gftt_miku.png',img)



1,000個のキーポイントが検出出来ました。

492_02.png


関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/11/02(日) 10:40:16|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<OpenCV 2.4.9 + py-opencvで特徴量を算出する | ホーム | FreeBSD + OpenCV 2.4.9 + py-opencvで顔認識>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1521-73cee9e1
この記事にトラックバックする(FC2ブログユーザー)