在python opencv特征点匹配检测中,去除特征点对位移小于1的特征点代码
时间: 2024-05-08 17:20:30 浏览: 112
feature_exaction_and_matching.rar
在Python OpenCV中,可以使用`cv2.DMatch`来表示两个特征点之间的匹配。每个DMatch对象包含了两个特征点的索引以及它们之间的距离。如果两个特征点的距离很小,那么它们就匹配成功了。
为了去除位移小于1的特征点,我们可以遍历所有的DMatch对象,然后根据它们之间的距离来判断它们是否匹配成功。如果两个特征点的距离小于1,那么就可以将它们删除。
下面是示例代码:
```python
import cv2
# 读取图像
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')
# 创建特征点检测器
orb = cv2.ORB_create()
# 检测特征点并计算描述符
kp1, des1 = orb.detectAndCompute(img1, None)
kp2, des2 = orb.detectAndCompute(img2, None)
# 创建特征点匹配器
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
# 进行特征点匹配
matches = bf.match(des1, des2)
# 去除位移小于1的特征点
good_matches = []
for match in matches:
if match.distance < 1:
good_matches.append(match)
# 显示匹配结果
img3 = cv2.drawMatches(img1, kp1, img2, kp2, good_matches, None, flags=2)
cv2.imshow('matches', img3)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们使用ORB特征点检测器和BFMatcher特征点匹配器进行特征点匹配。然后遍历所有的匹配结果,将位移小于1的特征点删除,并将剩余的特征点显示出来。
阅读全文