macos - 无法制作 OpenCV

标签 macos opencv makefile osx-snow-leopard

我从 OpenCV 网站下载了 OpenCV 2.3.1 并将其解压到 /usr/share/src。我在该文件夹中运行 sudo cmake . 以生成 make 文件,然后运行“sudo make”我收到以下错误:

[ 20%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/loadsave.o

/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:298: error: ‘InputArray’ has not been declared

/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp: In function ‘bool cv::imwrite(const std::string&, int, const std::vector >&)’:

/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:301: error: request for member ‘getMat’ in ‘_img’, which is of non-class type ‘int’

/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp: In function ‘void* cv::imdecode_(const cv::Mat&, int, int, cv::Mat*)’:

/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:312: error: ‘tempfile’ was not declared in this scope

/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp: At global scope:

/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:392: error: ‘cv::Mat cv::imdecode’ redeclared as different kind of symbol

/opt/local/include/opencv2/highgui/highgui.hpp:107: error: previous declaration of ‘cv::Mat cv::imdecode(const cv::Mat&, int)’

/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:392: error: ‘InputArray’ was not declared in this scope

/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:392: error: expected primary-expression before ‘int’

/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:399: error: ‘InputArray’ has not been declared

/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp: In function ‘bool cv::imencode(const std::string&, int, std::vector >&, const std::vector >&)’:

/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:402: error: request for member ‘getMat’ in ‘_image’, which is of non-class type ‘int’

/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:427: error: ‘tempfile’ was not declared in this scope

make[2]: * [modules/highgui/CMakeFiles/opencv_highgui.dir/src/loadsave.o] Error 1

make[1]: * [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error

这是为什么?我该如何解决?谢谢

完整错误如下:

make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/window.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg.cpp:45:
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘bool CvCapture_FFMPEG::grabFrame()’:
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:638: warning: ‘avcodec_decode_video’ is deprecated (declared at /opt/local/include/libavcodec/avcodec.h:3454)
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:640: warning: ‘avcodec_decode_video’ is deprecated (declared at /opt/local/include/libavcodec/avcodec.h:3454)
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘bool CvVideoWriter_FFMPEG::open(const char*, int, double, int, int, bool)’:
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1339: warning: ‘guess_format’ is deprecated (declared at /opt/local/include/libavformat/avformat.h:789)
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1339: warning: ‘guess_format’ is deprecated (declared at /opt/local/include/libavformat/avformat.h:789)
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1367: warning: ‘av_alloc_format_context’ is deprecated (declared at /opt/local/include/libavformat/avformat.h:947)
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1367: warning: ‘av_alloc_format_context’ is deprecated (declared at /opt/local/include/libavformat/avformat.h:947)
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:298: error: ‘InputArray’ has not been declared
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp: In function ‘bool cv::imwrite(const std::string&, int, const std::vector<int, std::allocator<int> >&)’:
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:301: error: request for member ‘getMat’ in ‘_img’, which is of non-class type ‘int’
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp: In function ‘void* cv::imdecode_(const cv::Mat&, int, int, cv::Mat*)’:
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:312: error: ‘tempfile’ was not declared in this scope
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp: At global scope:
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:392: error: ‘cv::Mat cv::imdecode’ redeclared as different kind of symbol
/opt/local/include/opencv2/highgui/highgui.hpp:107: error: previous declaration of ‘cv::Mat cv::imdecode(const cv::Mat&, int)’
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:392: error: ‘InputArray’ was not declared in this scope
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:392: error: expected primary-expression before ‘int’
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:399: error: ‘InputArray’ has not been declared
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp: In function ‘bool cv::imencode(const std::string&, int, std::vector<unsigned char, std::allocator<unsigned char> >&, const std::vector<int, std::allocator<int> >&)’:
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:402: error: request for member ‘getMat’ in ‘_image’, which is of non-class type ‘int’
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:427: error: ‘tempfile’ was not declared in this scope
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/loadsave.o] Error 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2

最佳答案

尝试在 the Wiki 的第 2 部分中使用 CMake 构建 下的说明:

mkdir build
cd build
cmake -G "Unix Makefiles" ..
make -j8
sudo make install

关于macos - 无法制作 OpenCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7410012/

相关文章:

c++ - 如何通过opencv中的程序参数定义要素类型?

编译特定源列表并生成依赖关系

C++ - Makefile 良好实践

eclipse - 我的删除键在 OS X 的 Eclipse 中不起作用

bash - 如何让 nasm 在 MacOS 的终端中作为命令工作?

c++ - 对来自网络摄像头的图像进行阈值处理

linux mint opencv 2.4.7 make 失败 - filtering.cpp 对 opencl_kernels.hpp 的引用,74% 后未找到

c++ - Clion "Cannot load CMake project: CMake executable is incorrect"问题

python - 使用 Tkinter 在 python 中的选项菜单中添加分隔符

mysql - Mac OS SQL Server 需要安装吗?