我目前正在尝试使用python在openCV中使用SIFT的Brute Force功能匹配器.我正在尝试将它用于我的服务器上的图像搜索功能,在那里我输入图像并将该图像与其他图像进行比较,希望匹配将指示相似程度.有没有办法通过使用特征匹配来指示相似程度?
目前,我正在玩我在本网站上发现的内容,我将在下面发布:
img1 = cv2.imread('box.png',0) # queryImage
img2 = cv2.imread('box_in_scene.png',0) # trainImage
# Initiate SIFT detector
sift = cv2.SIFT()
# find the keypoints and descriptors with SIFT
kp1, des1 = sift.detectAndCompute(img1,None)
kp2, des2 = sift.detectAndCompute(img2,None)
# BFMatcher with default params
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1,des2, k=2)
# Apply ratio test
good = []
for m,n in matches:
if m.distance < 0.75*n.distance:
good.append([m])
# cv2.drawMatchesKnn expects list of lists as matches.
img3 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good,flags=2)
plt.imshow(img3),plt.show()
Run Code Online (Sandbox Code Playgroud)
我现在用来创建"相似性"度量的是从应用比率测试中获得的"好"匹配的数量,并且只是使用简单的方法找到存储的好"匹配"的数量len(good) …
python opencv image-processing computer-vision feature-detection