2013-04-02 50 views
5
構建文件

我剛開始接觸OpenCV的,我有下面的示例.cpp文件(從opencv.org):凡/如何放置在OpenCV中

#include <stdio.h> 
#include <opencv2/opencv.hpp> 

using namespace cv; 

int main(int argc, char** argv) 
{ 
    Mat image; 
    image = imread(argv[1], 1); 

    if(argc != 2 || !image.data) 
    { 
     printf("No image data \n"); 
     return -1; 
    } 

    namedWindow("Display Image", CV_WINDOW_AUTOSIZE); 
    imshow("Display Image", image); 

    waitKey(0); 

    return 0; 
} 

,我有以下CMakeList .cmake文件:

project(opencvTEST) 
cmake_minimum_required(VERSION 2.6 FATAL_ERROR) 

find_package(OpenCV REQUIRED) 

# Project Executable 
add_executable (test test.cpp) 
target_link_libraries(test ${OpenCV_LIBS}) 

我有一個蘋果(OS 10.6.8),我已經安裝了OpenCV的2.4.3 CMake的,而且我已經搜查高和低,試過無數不同的東西來得到這個測試程序來編譯(我使用的命令行 - 沒有IDE),但我得到以下編譯錯誤(顯然,由於include語句的工作不正常):

test.cpp:3:30: error: opencv2/opencv.hpp: No such file or directory 
test.cpp:5: error: ‘cv’ is not a namespace-name 
test.cpp:5: error: expected namespace-name before ‘;’ token 
test.cpp: In function ‘int main(int, char**)’: 
test.cpp:9: error: ‘Mat’ was not declared in this scope 
test.cpp:9: error: expected `;' before ‘image’ 
test.cpp:10: error: ‘image’ was not declared in this scope 
test.cpp:10: error: ‘imread’ was not declared in this scope 
test.cpp:18: error: ‘CV_WINDOW_AUTOSIZE’ was not declared in this scope 
test.cpp:18: error: ‘namedWindow’ was not declared in this scope 
test.cpp:19: error: ‘imshow’ was not declared in this scope 
test.cpp:21: error: ‘waitKey’ was not declared in this scope 

我有一個在同一目錄下命名爲opencv2test.cppopencv.hppopencv2,所以我不明白爲什麼它沒有找到它。有任何想法嗎?

此外,一般來說,OpenCV希望您將源(.cpp等)文件放在哪裏?

+0

挺有意思的......我不知道'之間的差異< ''和''''''#include'語句。你知道將'opencv'和'opencv2'(帶有頭文件的文件夾)複製到'/ usr/include'目錄是否有缺點? – MuffinTheMan

回答

3

你忘了你的CMakeLists.txt

include_directories(${OpenCV_INCLUDE_DIRS}) 

添加find_package(OpenCV的必填)後

+0

謝謝,只是在'find_package ...'之前添加它,但它似乎沒有什麼區別。 – MuffinTheMan

+0

嘗試添加後,而不是之前 –

+0

仍然不工作,悲哀。你知道OpenCV是否有一個特定的目錄需要我放置我的源代碼? – MuffinTheMan

0

還有一個包括與路徑文件夾:OpenCV的\編譯\包括。完整的標題在那裏,你可以設置OpenCV_INCLUDE_DIR到這個目錄

+1

這似乎並沒有爲我做任何事,可悲的是。 – MuffinTheMan

1

我希望我確切地知道上面的問題,但我只能猜測它與我試圖使用OpenCV的事實有關2.4.3雖然已經安裝了OpenCV 2.4.4(我猜這導致了一些衝突)。

我得到OpenCV 2.4.4在我的機器上工作,通過刪除OpenCV 2.4.3(只是在我已經放置它的目錄上運行rm -rf)並卸載2.4.4(使用自制軟件:brew uninstall opencv)。採取這些措施,清理的東西后,我跑到下面的命令(你必須有homebrew):

$ brew update #just in case you're missing updates 
$ brew tap homebrew/science #skip this if you already have the science formulae 
$ brew install opencv #this took about 15 minutes 

最後,我也跟着this tutorial,瞧,它的工作!我把這一點記錄下來,用新的軟件來處理,這些軟件不直觀,讓人沮喪,並且嘗試使用273種不同的方式來運行OpenCV。我想所有這些加起來有一個我不知道的安裝,我認爲這會導致嚴重的問題。我是唯一一個難以讓OpenCV工作的人嗎?

+0

不,你不是唯一一個:))...只有一個安裝,我有類似的問題試圖在Fedora上。考慮在我的Mac上使用brew - 好的建議。所以這意味着我將擁有opencv的三個副本 - 就像你在上面的帖子中那樣,仍然不知道opencv真正需要src的地方:))...你有沒有發現這一點? (我在Eclipse上嘗試CDT,重試次數爲184--看起來我有辦法去273次嘗試。)大聲笑「第二百七十四次嘗試是魅力」? –

+0

哈哈,273可能有些誇張;)我希望我可以告訴你src文件應該在哪裏,但是我的團隊最終放棄了OpenCV並使用MATLAB代替。 – MuffinTheMan

+0

arrrggg ...昨天嘗試釀造...失敗%73: - \ MATLAB eh?有時候用現金支付比開源頭痛更好。如果我能買得起MATLAB或Wolfram的演出,我也會拋開openCV。無論如何感謝您的回覆!現在,我在哪裏離開Excedrin Extra Strength的情況? ...嗯 –

5

我有完全相同的問題。我跑從OpenCV的教程同樣的例子,並得到了同樣的錯誤

error: ‘CV_WINDOW_AUTOSIZE’ was not declared in this scope 

我通過將報頭解決了這個:

#include <opencv/highgui.h>