diff --git a/ocv_xfeatures.py b/ocv_xfeatures.py new file mode 100644 index 0000000..8dc0818 --- /dev/null +++ b/ocv_xfeatures.py @@ -0,0 +1,38 @@ +from __future__ import print_function +import cv2 as cv +import numpy as np +import argparse +from matplotlib import pyplot as plt + +parser = argparse.ArgumentParser(description='Code for Feature Detection tutorial.') +parser.add_argument('--input', help='Path to input image.', default='data/1.jpg') +args = parser.parse_args() + +src = cv.imread(cv.samples.findFile(args.input), cv.IMREAD_GRAYSCALE) +if src is None: + print('Could not open or find the image:', args.input) + exit(0) + +# -- Step 1: Detect the keypoints using SURF Detector +minHessian = 400 +detector = cv.xfeatures2d.HarrisLaplaceFeatureDetector.create() +keypoints = detector.detect(src) + +# -- Draw keypoints +img_keypoints = np.empty((src.shape[0], src.shape[1], 3), dtype=np.uint8) +cv.drawKeypoints(src, keypoints, img_keypoints) + +# -- Show detected (drawn) keypoints +cv.imshow('SURF Keypoints', img_keypoints) + +corners = cv.goodFeaturesToTrack(src, 25, 0.01, 10) + +# Draw corners detected +print('** Number of corners detected:', corners.shape[0]) +radius = 4 +for i in range(corners.shape[0]): + cv.circle(src, (int(corners[i, 0, 0]), int(corners[i, 0, 1])), radius, (0, 0, 255)) + +cv.imshow('goodFeaturesToTrack', src) + +cv.waitKey() \ No newline at end of file