从OpenCV Python中的Brute Force Matching获取像素坐标

时间:2015-05-31 13:27:38

标签: python python-2.7 opencv matching

我想在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对象获取像素坐标。

我该怎么做?

1 个答案:

答案 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 - 查询描述符中描述符的索引