Welcome, guest | Sign In | My Account | Store | Cart

Iterates through all feature detectors (that didn't crash my computer) and plots the point results.

Python, 64 lines
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Tests the various feature detector algorithms in OpenCV 2.4 on one image

@SINCE: Thu Sep 13 23:01:23 2012
@VERSION: 0.1

@REQUIRES: OpenCV 2.4 (I used 2.4.0), matplotlib

@AUTHOR: Ripley6811
@ORGANIZATION: National Cheng Kung University, Department of Earth Sciences
"""
__author__ = 'Ripley6811'
__copyright__ = ''
__license__ = ''
__date__ = 'Thu Sep 13 23:01:23 2012'
__version__ = '0.1'



import matplotlib.pyplot as plt  # plt.plot(x,y)  plt.show()
import cv2
import time



def test_feature_detector(detector, imfname):
    image = cv2.imread(imfname)
    forb = cv2.FeatureDetector_create(detector)
    # Detect crashes program if image is not greyscale
    t1 = time.time()
    kpts = forb.detect(cv2.cvtColor(image, cv2.COLOR_BGR2GRAY))
    t2 = time.time()
    print detector, 'number of KeyPoint objects', len(kpts), '(time', t2-t1, ')'

    return kpts


def main():
    imfname = r'_______.bmp'


    detector_format = ["","Grid","Pyramid"]
    # "Dense" and "SimpleBlob" omitted because they caused the program to crash
    detector_types = ["FAST","STAR","SIFT","SURF","ORB","MSER","GFTT","HARRIS"]


    for form in detector_format:
        for detector in detector_types:
            kpts = test_feature_detector(form + detector, imfname)

            # KeyPoint class: angle, class_id, octave, pt, response, size
            plt.figure(form + detector)
            for k in kpts:
                x,y = k.pt
                plt.plot(x,-y,'ro')
            plt.axis('equal')

    plt.show()


if __name__ == '__main__':
    main()

Fill in the imfname string and run. Displays 24 plot windows.