我注意到昨天发布了一个新版本的OpenCV, v2.3。
我无法在我的Mac上安装这个版本,使用cmake和基本指令编译Linux的源代码&Unix .
当我执行make指令时,我得到了这个错误信息:/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版本有错误或错误。还是我做错了什么?
您可能已经安装了以前版本的opencv2。检查/opt/local/include
和/opt/local/lib
。如果是这种情况,当您尝试编译openv2.3时,这些位置可能优先于您的系统PATH
,从而导致上述错误。要么删除旧的opencv版本,要么在编译新版本时暂时从上述文件夹中移动与opencv2相关的内容
我不确定你的构建不会有任何更多的错误,但一个快速的hack是保护#ifdef
块上的这些常数。
转到出现错误的行,注意这两个常量用于初始化名为domains
的int
数组。你可以把它的定义改成:
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
您可能已经安装了以前版本的opencv2。检查/opt/local/include和/opt/local/lib。如果是这样的话,这些位置可能优先于您的系统PATH编译导致上述错误的opencv2.3。要么去掉旧的Opencv版本或暂时移动与opencv2相关的当你编译新版本时,上面提到的文件夹
谢谢。它现在在Mac 10.6.8下使用OpenCV 2.3.1运行良好
Update:
sudo port install cmake