KilianK KilianK - 1 month ago 21
Python Question

Where is the FAST algorithm in OpenCV?

I'm not able to find the FAST corner detector in the Python OpenCV module,
I tried this this like described in that link. My OpenCV version is 3.1.0.

I know that feature-description algorithms like SIFT and SURF were shifted to cv2.xfeatures2d, but the FAST algorithm is not located there.

Answer

According to opencv-3.1.0 documentation You can run FAST in python this way:

import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread('simple.jpg',0)

# Initiate FAST object with default values
fast = cv2.FastFeatureDetector_create()

# find and draw the keypoints
kp = fast.detect(img,None)
img2 = cv2.drawKeypoints(img, kp, color=(255,0,0))

# Print all default params
print "Threshold: ", fast.getInt('threshold')
print "nonmaxSuppression: ", fast.getBool('nonmaxSuppression')
print "neighborhood: ", fast.getInt('type')
print "Total Keypoints with nonmaxSuppression: ", len(kp)

cv2.imwrite('fast_true.png',img2)

# Disable nonmaxSuppression
fast.setBool('nonmaxSuppression',0)
kp = fast.detect(img,None)

print "Total Keypoints without nonmaxSuppression: ", len(kp)

img3 = cv2.drawKeypoints(img, kp, color=(255,0,0))

cv2.imwrite('fast_false.png',img3)
Comments