Esempio n. 1
0
    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