擅长:python、mysql、java
<p>我知道这个问题有一个公认的答案是正确的,但是如果您使用的是OpenCV 2.4.8而不是3.0(-dev),解决方法可能是使用<code>opencv\sources\samples\python2\find_obj</code>中包含的示例中的一些函数</p>
<pre><code>import cv2
from find_obj import filter_matches,explore_match
img1 = cv2.imread('../c/box.png',0) # queryImage
img2 = cv2.imread('../c/box_in_scene.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)
matches = bf.knnMatch(des1, trainDescriptors = des2, k = 2)
p1, p2, kp_pairs = filter_matches(kp1, kp2, matches)
explore_match('find_obj', img1,img2,kp_pairs)#cv2 shows image
cv2.waitKey()
cv2.destroyAllWindows()
</code></pre>
<p>这是输出图像:</p>
<p><img src="https://i.stack.imgur.com/heY2D.jpg" alt="enter image description here"/></p>