2011-07-05 40 views
0

我注意到昨天發佈了一個新版本的OpenCV v2.3。在OS X中安裝OpenCV 2.3(新版本)問題

我不能在我的Mac上使用cmake和基本指令來編譯Linux版本的源代碼& Unix。

/Users/jorgevegasanchez/Downloads/OpenCV-2.3.0/modules/highgui/src/cap.cpp: In function ‘CvCapture* cvCreateCameraCapture(int)’: 
/Users/jorgevegasanchez/Downloads/OpenCV-2.3.0/modules/highgui/src/cap.cpp:130: error: ‘CV_CAP_OPENNI’ was not declared in this scope 
/Users/jorgevegasanchez/Downloads/OpenCV-2.3.0/modules/highgui/src/cap.cpp:131: error: ‘CV_CAP_ANDROID’ was not declared in this scope 
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap.o] Error 1 
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2 
make: *** [all] Error 2 

使用cmake安裝的OpenCV 2.2時是沒有問題的:

當我執行廠名指令我得到這個錯誤信息。我認爲OSX版本的OpenCV 2.3版本存在錯誤或錯誤。或者我犯了錯誤?

在此先感謝。

+0

在執行* make *之前執行了哪些命令來創建* cmake *文件? – karlphillip

回答

1

我不確定你的版本不會有任何更多的錯誤,但一個快速入門就是保護這些常量在#ifdef塊。

轉到發生錯誤的那些行,並注意這兩個常量用於初始化一個名爲domainsint數組。您可以將其定義更改爲:

int domains[] = 
    { 
#ifdef HAVE_VIDEOINPUT 
     CV_CAP_DSHOW, 
#endif 
     CV_CAP_IEEE1394, // identical to CV_CAP_DC1394 
     CV_CAP_STEREO, 
     CV_CAP_PVAPI, 
     CV_CAP_VFW,  // identical to CV_CAP_V4L 
     CV_CAP_MIL, 
     CV_CAP_QT, 
     CV_CAP_UNICAP, 
#ifdef HAVE_OPENNI 
     CV_CAP_OPENNI, 
#endif 
#ifdef HAVE_ANDROID_NATIVE_CAMERA 
     CV_CAP_ANDROID, 
#endif 
     -1 
    }; 

這將解決這些具體錯誤,並希望您不會有其他錯誤。

編輯:

我剛剛下載的OpenCV 2.3,並使用標準的程序編譯它,一切都很好。 沒有錯誤!

tar -xjvf OpenCV-2.3.0.tar.bz2 
cd OpenCV-2.3.0 
mkdir build 
cd build/ 
cmake ../ 
make 
sudo make install 
+1

這些常量在'modules/highgui/include/opencv2/highgui/highgui_c.h'中定義。有沒有可能cap.cpp不包括Mac OS X版本的這個文件? – karlphillip

+0

@Jorge更新了答案。我沒有問題在Mac OS X 10.6.8 – karlphillip

+0

上編譯OpenCV 2.3好,謝謝,也許他們更新了一些東西。如果我在Linux中安裝,則沒有錯誤。我會在今天下午嘗試。 –

0

更新的cmake:

sudo port install cmake 
2

你可能已經安裝了opencv2的早期版本。請檢查/opt/local/include/opt/local/lib。如果是這種情況,當您嘗試編譯opencv2.3導致上述錯誤時,這些位置可能會優先於您的系統PATH。刪除舊的opencv版本,或在編譯新版本時從上述文件夾臨時移動與opencv2相關的文件。

1

您可能已經安裝了先前版本的opencv2。檢查 /opt/local/include和/ opt/local/lib。如果是這種情況,當您嘗試編譯opencv2.3導致上述錯誤時,這些 位置可能會優先於您的系統PATH。刪除舊版本 opencv版本,或在編譯新版本時從 上述文件夾臨時移動與opencv2相關的opencv2。

謝謝。它現在工作正常與我的OpenCV 2.3.1在Mac 10.6.8下