2015-12-19 163 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)。 –