pythonopencv中FLANN匹配特征点的坐标存储在哪个参数里
时间: 2023-11-28 14:48:33 浏览: 80
在Python OpenCV中,使用FLANN进行特征匹配时,匹配的结果会存储在`matches`变量中。每个匹配都是一个`cv2.DMatch`对象,其中包含了两个特征点的索引,分别对应查询图像和训练图像中的特征点。可以通过`queryIdx`和`trainIdx`属性获取这两个特征点的索引,然后通过`kp1`和`kp2`变量访问这两个特征点的坐标,例如:
```python
import cv2
# 加载图像
img1 = cv2.imread('img1.png', 0)
img2 = cv2.imread('img2.png', 0)
# 初始化SIFT检测器
sift = cv2.xfeatures2d.SIFT_create()
# 检测关键点和描述符
kp1, des1 = sift.detectAndCompute(img1, None)
kp2, des2 = sift.detectAndCompute(img2, None)
# 初始化FLANN匹配器
flann = cv2.FlannBasedMatcher()
# 匹配特征点
matches = flann.match(des1, des2)
# 输出前10个匹配结果
for match in matches[:10]:
# 获取特征点的坐标
x1, y1 = kp1[match.queryIdx].pt
x2, y2 = kp2[match.trainIdx].pt
# 输出坐标信息
print('queryIdx={}, trainIdx={}, x1={}, y1={}, x2={}, y2={}'.format(match.queryIdx, match.trainIdx, x1, y1, x2, y2))
```
在上面的代码中,我们通过`sift.detectAndCompute`检测关键点和描述符,然后使用`cv2.FlannBasedMatcher`进行匹配,匹配结果存储在`matches`变量中。在遍历匹配结果时,我们通过`queryIdx`和`trainIdx`属性获取查询图像和训练图像中的特征点的索引,然后通过`kp1`和`kp2`变量访问这两个特征点的坐标,最后输出坐标信息。
阅读全文