gpt4 book ai didi

python - 使用 OpenCV dense SIFT 查找图像之间的匹配

转载 作者:太空宇宙 更新时间:2023-11-03 22:58:55 26 4
gpt4 key购买 nike

我已经根据此 question 的答案之一使用 OpenCV 实现了密集特征检测器.

sift = cv2.SIFT()
dense=cv2.FeatureDetector_create("Dense")
kp1=dense.detect(template_detect)
des1=sift.compute(template_detect,kp1)
kp2=dense.detect(image_detect)
des2=sift.compute(image_detect,kp2)

它运行良好,但是,我有兴趣比较这两张图片以尝试找到它们之间的匹配项。但是,当尝试像下面那样实现它时,我收到错误“TypeError: queryDescriptors is not a numeric tuple”。

bf = cv2.BFMatcher(cv2.NORM_L2, crossCheck=True)
matches = bf.match(des1,des2)
matches = sorted(matches, key = lambda x:x.distance)
img3 = cv2.drawMatches(template_detect,kp1,image_detect,kp2,matches[:4], 2, None)

有没有更好的方法来实现图像之间的关键点匹配?

最佳答案

您现在可能已经删除了它,但错误是 signature for compute()

Python:cv2.SIFT.compute(image, keypoints[, descriptors]) → keypoints, descriptors

您的代码为 des1/des2 分配了一个包含关键点和描述符的元组,这不是您想要的。对您的代码的更正将是;

sift = cv2.SIFT()
dense=cv2.FeatureDetector_create("Dense")
kp1=dense.detect(template_detect)
_, des1=sift.compute(template_detect,kp1)
kp2=dense.detect(image_detect)
_, des2=sift.compute(image_detect,kp2)

这将从返回中删除关键点。

关于python - 使用 OpenCV dense SIFT 查找图像之间的匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22927203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com