Python3 OpenCV3で画像の特徴点を抽出

2015年8月21日

ちょっと苦労した。

[amazonjs asin="4839952965″ locale="JP" title="OpenCV 3 プログラミングブック"]

画像の特徴点とは

画像の特徴点とは、画像の角の部分であったり曲線の極大点であったりと、その画像内で際立った部分のこと。
以下の画像の赤い部分。

characteristic

顔など様々な判定をしたいときなどに使われそうなのはなんとなく想像できる。

 

前提

ディレクトリ構成などはこことかこことか。

 

元画像

ダンボーの画像(dambo.jpg)を使用した。

dambo

 

特徴点の抽出

OpenCV2(OpenCV3-alpha?)までは、FeatureDetector_createメソッドで特徴点の抽出が行えたが、OpenCV3では廃止されていた。
代わりに、FastFeatureDetector_createメソッドが実装されていたため、これを利用。

sourceディレクトリにcharacteristic.pyファイルを作成。

[python title="characteristic.pyの内容"]
# -*- coding: utf-8 -*-

import cv2
import numpy as np

if __name__ == '__main__’:

# ファイル読み込み
img_src = cv2.imread("./image/dambo.jpg")
img_keypoint = img_src

# キーポイントの検出
gftt = cv2.FastFeatureDetector_create()
keypoints = gftt.detect(img_src)

# キーポイントの数をターミナル上に表示
print(len(keypoints))

# 表示
img_keypoint = cv2.drawKeypoints(img_src, keypoints, img_keypoint)
cv2.imshow("SHOW KEYPOINTS IMAGE", img_keypoint)
cv2.waitKey(0)
cv2.destroyAllWindows()

[/python]

実行してみる。

[shell]
(opencv_python) $ python characteristic.py
[/shell]

スクリーンショット 2015-08-04 11.58.39

 

できたー。