def getKpAndDescriptors(self, img, detector="sift"): if detector.lower() == "harris": thr = 0.01 size = 2 dst = cv2.cornerHarris(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY), 2, 3, 0.04) dst = cv2.dilate(dst, None) kp = np.argwhere(dst > thr * dst.max()) key_points = [cv2.KeyPoint(k[0], k[1], 2) for k in kp] sift_creator = SIFT_create() __, descriptors = sift_creator.compute(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY), key_points) return descriptors[:100] elif detector.lower() == "sift": sift_creator = SIFT_create() kp, descriptors = sift_creator.detectAndCompute(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY), None) return descriptors[:100]
# Plot the matched pairs of feature points large_image = match_image_points(rotate_image_1, rotate_image_2, rotate_interest_points_1, rotate_interest_points_2, matched_pairs) plot_image(large_image, 'Matched Interest Points') # Read left and right image for panoramic stitching im_left = imread('.\sample image\DT_left.jpg') im_right = imread('.\sample image\DT_right.jpg') # Create the SIFT feature point detector object sift = SIFT_create() # Identify the keypoints and SIFT descriptors skp_left = sift.detect(im_left) skp_right = sift.detect(im_right) skp_left, sd_left = sift.compute(im_left, skp_left) skp_right, sd_right = sift.compute(im_right, skp_right) # Plot the keypoints on the image keypoints_left = draw_keypoints(im_left, skp_left) plot_image(keypoints_left, 'Keypoints on Left Image') keypoints_right = draw_keypoints(im_right, skp_right) plot_image(keypoints_right, 'Keypoints on Right Image') # Adjust the descriptors to be of equal sizes if sd_left.size < sd_right.size: sd_right = sd_right[0:sd_left.shape[0], 0:sd_left.shape[1]] elif sd_left.size >= sd_right.size: sd_left = sd_left[0:sd_right.shape[0], 0:sd_right.shape[1]] # Identify the matched pairs of points