2015-12-19 167 views
1

我在我的MacBook安装ubuntu 14.04.3和opencv3,但是当我编译下面的代码:'createStereoBM' 在此范围内未声明

#include <opencv2/opencv.hpp> 
#include <iostream> 
#include <stdio.h> 
using namespace std; 
using namespace cv; 

int main(){ 
    Ptr<StereoBM> sbm = createStereoBM(16,2); 
    return 0; 
} 

我得到错误:

stereo.cpp: In function ‘int main()’: 
stereo.cpp:8:44: error: ‘createStereoBM’ was not declared in this scope 
    Ptr<StereoBM> sbm = createStereoBM(16,2); 
             ^

我无法找到createStereoBM库。我会很感激任何提示。谢谢。

+0

['foo'的可能重复未在此范围内声明C++](http://stackoverflow.com/questions/6283168/foo-was-not-declared-in-this-scope-c) – nkjt

+0

我知道关于C++库,但我找不到createStereoBM库。 – Leomic

+0

[rtfm](http://docs.opencv.org/ref/master/d9/dba/classcv_1_1StereoBM.html#a04fdf00525f82fe708d556e2cd359004) – berak

回答

-2

createStereoBM是命名空间的一部分cuda

无论您使用的名称空间cuda

#include "opencv2/cudastereo.hpp" 
using namespace cv; 

int main(){ 
    Ptr<StereoBM> sbm = cuda::createStereoBM(16,2); 
        //^namespace 'cuda' 
    return 0; 
} 

,或者你使用cv::StereoBM::create

Ptr<StereoBM> sbm = cv::StereoBM::create(16,2); 
+0

您无需安装CUDA即可运行此功能!只要使用cv :: StereoBM :: create作为其他答案告诉。您使用CUDA在nVidia设备上优化您的算法,而不是解决不存在的功能问题! –

+0

@Leomic您能否接受其他答案?然后,我将能够删除答案。 – Rabbid76

2

有可能是与3.0 Beta文档的问题;它似乎引用了一个cuda function。作为@berak指出使用current opencv documentation

cv::StereoBM::create 

正确的功能似乎是。

+0

一个潜在解决方案的链接总是受欢迎的,但请[在链接上添加上下文](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really -good-answers/8259#8259),所以你的同行们会有一些想法是什么,为什么它在那里。如果目标网站无法访问或永久离线,请始终引用重要链接中最相关的部分。考虑到*仅仅是一个外部网站的链接*是一个可能的原因[为什么和如何删除一些答案?](http://stackoverflow.com/help/deleted-answers)。 –