在Ubuntu16.04 cuda11 中装opencv3.4.2
1. 安装步骤
2. 安装所遇到错误
1. 动态链接库
错误提示
make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/libGL.so', needed by 'lib/cv2.so'.
解决办法
-
建立symlink: sudo ln -s /usr/lib/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so (之所以链接到libGL.so.1而不是libGL.so可能是为了便于区分)
-
如果出现错误: ln: failed to create symbolic link ‘/usr/lib/x86_64-linux-gnu/libGL.so’ : File exists
则删除已有链接: sudo rm /usr/lib/x86_64-linux-gnu/libGL.so
-
重新建立symlink: sudo ln -s /usr/lib/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so
2. python
错误提示
recipe for target 'modules/python2/CMakeFiles/opencv_python2.dir/all' failed
make[1]: *** [modules/python2/CMakeFiles/opencv_python2.dir/all] Error 2
Makefile:160: recipe for target 'all' failed make: *** [all] Error 2
解决办法
- 参考其他解决办法,如“安装opencv3.2.0 cmake出现 CMakeFiles/Makefile2:1264: recipe for target 'modules/cudev/test/CMakeFiles/o”
添加 -D BUILD_TESTS=OFF
但还是有问题,之前是中间报错,现在是make 100%报错
继续查资料
看到这篇文章对我有启发 “在anaconda3中安装openCV – Python.h:没有这样的文件或目录”
根据文中方案,将include /目录中的所有.h文件复制到include / python3.5m目录中 ,还是有问题。
最后灵机一闪
是不是在cmake 有关PYTHON的地方都加上Python3,嗦嘎,果然OK
添加前cmake 语句:
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D INSTALL_C_EXAMPLES=OFF \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.2/modules \ -D PYTHON_EXCUTABLE=/usr/bin/python \ -D WITH_CUDA=ON \ -D WITH_CUBLAS=ON \ -D DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" \ -D CUDA_ARCH_BIN="7.5" \ -D CUDA_ARCH_PTX="" \ -D CUDA_FAST_MATH=ON \ -D WITH_TBB=ON \ -D WITH_V4L=ON \ -D WITH_QT=ON \ -D WITH_OPENMP=ON -D BUILD_SHARED_LIBS=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF -D BUILD_TESTS=OFF ..
添加后的正确make 的cmake语句:
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D INSTALL_C_EXAMPLES=OFF \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.2/modules \ -D PYTHON3_EXCUTABLE=/usr/lib/python3.5 \ -D WITH_CUDA=ON \ -D WITH_CUBLAS=ON \ -D DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" \ -D CUDA_ARCH_BIN="7.5" \ -D CUDA_ARCH_PTX="" \ -D CUDA_FAST_MATH=ON \ -D WITH_TBB=ON \ -D WITH_V4L=ON \ -D WITH_QT=ON \ -D WITH_OPENMP=ON -D BUILD_SHARED_LIBS=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF -D BUILD_TESTS=OFF ..
完美!
最后测试
找到 opencv-3.4.2/samples/cpp/example_cmake 目录下,官方已经给出了一个cmake的example,我们可以拿来测试下。按顺序执行:
cmake .
make
./opencv_example 运行看到打开的摄像头