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


ちょっと苦労した。

画像の特徴点とは

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

characteristic

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

 

前提

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

 

元画像

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

dambo

 

特徴点の抽出

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

sourceディレクトリに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()

実行してみる。

(opencv_python) $ python characteristic.py

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

 

できたー。

 

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です