我想在Python中使用OpenCV获取查询和训练图像的像素坐标。
代码是:
import numpy as np
import cv2
img1 = cv2.imread('qimg.png',0) # queryImage
img2 = cv2.imread('timg.png',0) # trainImage
# Initiate SIFT detector
orb = cv2.ORB()
# find the keypoints and descriptors with SIFT
kp1, des1 = orb.detectAndCompute(img1,None)
kp2, des2 = orb.detectAndCompute(img2,None)
# create BFMatcher object
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
# Match descriptors.
matches = bf.match(des1,des2)
我想从每个DMatch
对象获取像素坐标。
我该怎么做?
答案 0 :(得分:-1)
您可以使用命令执行此操作:
src_pts = np.float32([ kp1[m.queryIdx].pt for m in matches ]).reshape(-1,1,2)
dst_pts = np.float32([ kp2[m.trainIdx].pt for m in matches ]).reshape(-1,1,2)
其中
m.trainIdx
- 列车描述符中描述符的索引和m.queryIdx
- 查询描述符中描述符的索引