python怎么获取Dmatch中的坐标
时间: 2023-08-10 08:05:55 浏览: 44
在OpenCV中,DMatch是存储匹配特征点的数据结构,其中包含了两个特征点的索引和一个匹配度量值。如果要获取匹配特征点的坐标,需要通过特征点的索引来获取。
假设你有匹配特征点的列表matches,可以通过以下代码来获取匹配特征点的坐标:
```
import cv2
# 读取图像
img1 = cv2.imread('img1.jpg')
img2 = cv2.imread('img2.jpg')
# 获取特征点
sift = cv2.xfeatures2d.SIFT_create()
kp1, des1 = sift.detectAndCompute(img1, None)
kp2, des2 = sift.detectAndCompute(img2, None)
# 特征点匹配
bf = cv2.BFMatcher()
matches = bf.match(des1, des2)
# 获取匹配特征点的坐标
for match in matches:
img1_idx = match.queryIdx
img2_idx = match.trainIdx
x1, y1 = kp1[img1_idx].pt
x2, y2 = kp2[img2_idx].pt
print("匹配特征点坐标:({}, {}) -> ({}, {})".format(x1, y1, x2, y2))
```
在上述代码中,我们首先使用SIFT算法获取图像的特征点,然后使用BFMatcher进行特征点匹配。最后,通过遍历匹配结果列表matches,获取每个匹配特征点的索引,然后通过索引来获取对应的坐标。