首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cv2 3.0.0 cv2 . cv2.FlannBasedMatcher: flann.knnMatch抛出cv2错误

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

Stack Overflow用户
提问于 2015-10-04 09:10:56
回答 4查看 6.8K关注 0票数 4

我想在Python中使用一个基于flann的匹配器,如matcher.html中所描述的。

由于我使用的是OpenCV 3.0.0,所以必须调整有关SIFT检测器初始化的代码。其余的不作改动。

代码语言:javascript
复制
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)

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

代码语言:javascript
复制
cv2.error: cv2.cpp:161: error: (-215) The data should normally be NULL! in function allocate

在队伍中:

代码语言:javascript
复制
matches = flann.knnMatch(desc1,desc2,k=2)        

还有一条评论:如果我使用蛮力匹配器,一切都很好:

代码语言:javascript
复制
bf = cv2.BFMatcher()
matches = bf.knnMatch(desc1, desc2, k=2)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-10-13 09:36:26

我的电脑上也有同样的问题。于是,我用Ubuntu14.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

票数 0
EN

Stack Overflow用户

发布于 2015-11-13 00:03:54

如果您在Mac上使用python3,这就为我做了这件事,而不是从github构建它:

代码语言:javascript
复制
brew install opencv3 --with-python3 --with-contrib

代码语言:javascript
复制
export PYTHONPATH=$PYTHONPATH:/usr/local/Cellar/opencv3/3.0.0/lib/python3.4/site-packages

用您的版本替换python3.4。

似乎函数分配()存在一些一般性问题。我对BackgroundSubtractorMOG2也有同样的问题,除了FLANN matcher。这两样都修好了。

票数 1
EN

Stack Overflow用户

发布于 2015-11-23 18:24:24

在..\opencv\modules\python\src2中注释cv2.cpp中的第162行

代码语言:javascript
复制
CV_Error(Error::StsAssert, "The data should normally be NULL!")

重新编译和SIFT应该工作得很好。

来源:http://answers.opencv.org/question/76952/regarding-the-error-message-the-data-should-normally-be-null/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32931856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档