Python代码的实现:
import cv2
import numpy as np
import time
import os
def main():
images = os.listdir('./images/')
pre_image = cv2.imread('./images/1.jpg', 0)
print("images:",images)
sift = cv2.xfeatures2d.SIFT_create()
bf = cv2.BFMatcher()
start_time = time.time()
for img in images:
img2 = cv2.imread(os.path.join('./images', img), 0)
kp1, des1 = sift.detectAndCompute(pre_image, None)
kp2, des2 = sift.detectAndCompute(img2, None)
ti = time.time()
matches = bf.knnMatch(des1, des2, k=2)
good = []
for m, n in matches:
if m.distance < 0.75 * n.distance:
good.append([m])
img3 = cv2.drawMatchesKnn(pre_image, kp1, img2, kp2, good, None, flags=2