当前位置: 首页 > 面试题库 >

cv2 3.0.0 cv2.FlannBasedMatcher:flann.knnMatch抛出cv2错误

史默
2023-03-14
问题内容

我想按照http://opencv-python-
tutroals.readthedocs.org/en/latest/py_tutorials/py_feature2d/py_matcher/py_matcher.html中的说明
在Python中使用基于flann的匹配器

由于我使用的是OpenCV 3.0.0,因此必须调整有关SIFT检测器初始化的代码。其余部分不变

def calculateMatch(self):
    # Initiate SIFT detector
    sift = cv2.xfeatures2d.SIFT_create()

    # find the keypoints and descriptors with SIFT
    (kp1, desc1) = sift.detectAndCompute(self.image1,None)
    (kp2, desc2) = sift.detectAndCompute(self.image2,None)

    # FLANN parameters
    FLANN_INDEX_KDTREE = 0

    index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5)
    search_params = dict(checks=50)   # or pass empty dictionary

    flann = cv2.FlannBasedMatcher(index_params,search_params)
    matches = flann.knnMatch(desc1,desc2,k=2)

运行代码时,我收到以下消息

cv2.error: cv2.cpp:161: error: (-215) The data should normally be NULL! in function allocate

在行中:

matches = flann.knnMatch(desc1,desc2,k=2)

另一则评论:如果使用蛮力匹配器,一切正常:

bf = cv2.BFMatcher()
matches = bf.knnMatch(desc1, desc2, k=2)

问题答案:

我在计算机上遇到了同样的问题。因此,我使用Ubuntu 14.04制作了一个新的虚拟机并进行了测试。

我不知道为什么....但是,我用OpenCV 3.0.0-rc1解决了这个问题。

如果您使用的是OpenCV3.0.0,请尝试其他版本的OpenCV3

对于安装,我指的是下一页。 http://rodrigoberriel.com/2014/10/installing-opencv-3-0-0-on-
ubuntu-14-04/
在此页面上,Opencv的版本为Alpha。如以下示例所示。

wget https://github.com/Itseez/opencv/archive/3.0.0-rc1.zip -O opencv-3.0.0-rc1.zip



 类似资料:
  • 因此,我使用服务器(google-app-engine)在客户端应用程序上进行身份验证。当我使用JavaFX、Webview或HttpsURLConnection时,一切都很好,它们连接起来了,但是当我使用HttpClient时,它会抛出以下错误 javax.net.ssl.sslpeerunverifiedexception:peer未在sun.security.ssl.sslsessionim

  • 我在服务层的spring-boot应用程序中使用了Hystrix(Camden.sr7版本),而没有回退方法。Service的方法之一如下所示: 对于这样的响应,不清楚实际上是从哪个方法抛出异常的。如果我将版本更改为brixton.sr5(以前的版本),它将返回清晰的响应: 因此Hystrix的新版本(实际上是spring-cloud-dependencies的新版本)不会抛出HystrixRun

  • 当我尝试使用JQuery POST向服务器发送数据时,我得到以下错误。 我做错了什么? 未捕获的TypeError:在e处非法调用(https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js:4:7727)在Ab(https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.

  • 我已经安装了用于PHP开发的XAMPPv3.2.1。由于我已经安装了Skype并使用端口80和443,我将XAMPP配置为在端口1333(http.conf)和3333(https.conf)上运行。 我启动了xampp MySQL服务并成功启动。 当我导航到超文本传输协议://: 1333 xampp工作正常,但是如果我点击phpmyadmin我得到以下错误。 MySQL说:文档 服务器没有响应

  • 为了参考,我的“jps”命令的输出结果是

  • 问题内容: 我有以下代码: 但是,它引发此错误: 谁能告诉我为什么会这样吗? 问题答案: 我相信这是因为相对的路径。“ ../”被认为是恶意的。首先解析本地路径,然后调用。您可以事先解析路径。