Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 ORB与opencv 3中的匹配错误_Python 2.7_Opencv_Opencv3.0_Orb_Flann - Fatal编程技术网

Python 2.7 ORB与opencv 3中的匹配错误

Python 2.7 ORB与opencv 3中的匹配错误,python-2.7,opencv,opencv3.0,orb,flann,Python 2.7,Opencv,Opencv3.0,Orb,Flann,目前,我正在使用python开发opevcv,但当我使用 kp1 = orb.detect(img1,None) kp2 = orb.detect(img2,None) kp1, des1 = orb.compute(img1, kp1) kp2, des2 = orb.compute(img2, kp2) matches = matcher.match(des1, des2) 我得到的错误是没有定义匹配器 matches = matcher.m

目前,我正在使用python开发opevcv,但当我使用

    kp1 = orb.detect(img1,None)
    kp2 = orb.detect(img2,None)
    kp1, des1 = orb.compute(img1, kp1)
    kp2, des2 = orb.compute(img2, kp2)
    matches = matcher.match(des1, des2)
我得到的错误是没有定义匹配器

    matches = matcher.match(des1, des2)
    NameError: name 'matcher' is not defined
,我将opencv 3.0.0与python 2.7一起使用,有人能告诉我为什么会出现此错误吗??
我们是否可以在python中使用matcher???

您需要首先创建
matcher
对象。有关完整示例,请参见:


您需要首先创建
匹配器
对象。有关完整示例,请参见:


在上面的代码中,而不是
orb=cv2.orb()

这解决了版本兼容性问题:

类型错误:自我类型不正确(必须是“Feature2D”或其 衍生工具)


在上面的代码中,而不是
orb=cv2.orb()

这解决了版本兼容性问题:

类型错误:自我类型不正确(必须是“Feature2D”或其 衍生工具)


你创造了第一个吗?。类似于
matcher=cv2.BFMatcher(cv2.NORM\u HAMMING,crossCheck=True)
no,实际上我是这个领域的新手,所以我不知道创建matcher对象的正确语法是什么。检查我在上面的链接中发布的教程创建matcher对象后,现在我遇到了一个新错误img12=cv2.drawMatchesKnn(img1,kp1,img2,kp2,matches,None,flag=2)TypeError:“flag”是此函数的无效关键字参数教程建议使用带有“s”的
flags
。drawMatches(img1,kp1,img2,kp2,matches[:10],flags=2)是否创建了第一个?。类似于
matcher=cv2.BFMatcher(cv2.NORM\u HAMMING,crossCheck=True)
不,实际上我是这个领域的新手,所以我不知道创建matcher对象的正确语法检查我在上面链接中发布的教程创建matcher对象后,现在我遇到了一个新错误img12=cv2.drawMatchesKnn(img1,kp1,img2,kp2,matches,None,flag=2)TypeError:“flag”是此函数的无效关键字参数教程建议使用带有“s”!
cv2.drawMatches(img1,kp1,img2,kp2,matches[:10],flags=2)
import numpy as np
import cv2
from matplotlib import pyplot as plt

img1 = cv2.imread('box.png',0)          # queryImage
img2 = cv2.imread('box_in_scene.png',0) # trainImage

# Initiate ORB detector
orb = cv2.ORB()

# find the keypoints and descriptors with ORB
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)

# Sort them in the order of their distance.
matches = sorted(matches, key = lambda x:x.distance)

# Draw first 10 matches.
img3 = cv2.drawMatches(img1,kp1,img2,kp2,matches[:10], flags=2)

plt.imshow(img3),plt.show()
use orb = cv2.ORB_create()