编译部分
1.首先需要进入github下载对应的安装包
Opencv
Opencv-contrib
或者可以使用git方式从github上clone下来(clone的时候请注意目录的路径)
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
2.接下来进入到下载好的opencv-4.7.0目录中
在该目录中建立一个空的目录build,进入该目录
在该目录中依次采用
(请注意OPENCV_EXTRA_MODULES_PATH
接口的地址为自己的opencv_contrib
下的modules目录)
(第一部编译采用的cmake
命令中的-D
为编译过程中的接口打开与否,可以根据需要自行决定需要打开或关闭)
cmake .. -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=OFF \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUBLAS=1 \
-D WITH_CUDA=ON \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D WITH_V4L=OFF \
-D WITH_QT=OFF \
-D WITH_OPENGL=OFF \
-D WITH_GSTREAMER=OFF \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_PC_FILE_NAME=opencv.pc \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.7.0/modules \
-D INSTALL_C_EXAMPLES=OFF \
-D WITH_NVCUVID=ON \
-D WITH_NVCUVENC=ON \
-D WITH_FFMPEG=ON \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_EXAMPLES=OFF
(这里的$(nproc)
是电脑的cpu核数,使用越多编译越快)
make -j$(nproc)
sudo make install
问题总结
1.上述编译过程为默认情况下所有需要的软件包和依赖以及工具都是正确版本的情况下最顺利的安装编译过程,如果工具或者依赖项安装有误,请按照需要下载
安装cmake工具
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential cmake
安装Opencv依赖项
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libcanberra-gtk-module
sudo apt-get install pkg-config
2.FFmpeg与Opencv版本不兼容的问题,需要安装合适版本的FFmpeg,否则会出现下面的错误
(出现这个问题时博主还查询到了编译时添加--enable-pic --enable-shared
以及关闭BUILD_SHARED_LIBS
接口的办法,但是请注意,这样确实会编译成功,但是在后续进行make install
以及后续在需要的项目环境中使用Opencv环境时会提示无法找到需要的共享库)
(下面是查看自己的FFmpeg版本的命令,博主使用4.3.6成功编译Opencv,并不一定唯一)
ffmpeg -version
3.LIBTIFF报错问题(该问题难住了我很多天,最终成功解决,所以才有了这篇文章)
报错界面
首先参考将-DBUILD_TIFF=ON
接口打开的办法,但是无法解决
查询后发现是因为系统已经安装libtiff
库,但是和anaconda中的同名库冲突,所以需要进入到conda环境中使用下面的命令卸载libtiff
库,顺利解决
conda uninstall libtiff
4.在编译过程中可能还会遇见提示gcc版本过高等问题,可以参考网上的教程对gcc版本进行安装和切换