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 BUILD_opencv_cudacodec=OFF \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_BIN=8.6 \
-D WITH_V4L=ON \
-D WITH_QT=OFF \
-D WITH_OPENGL=ON \
-D WITH_GSTREAMER=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_PC_FILE_NAME=opencv.pc \
-D OPENCV_ENABLE_NONFREE=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_OPENCV_PYTHON3=ON \
-D CUDNN_LIBRARY=/usr/local/cuda/lib64/libcudnn.so.8.4.1 \
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
-D CMAKE_LIBRARY_PATH=/usr/local/cuda/lib64/stubs \
-D CUDA_NVCC_FLAGS=--Wno-deprecated-gpu-targets \
-D WITH_NVCUVID=ON \
-D CMAKE_EXE_LINKER_FLAGS=-lcblas \
-D WITH_LAPACK=OFF \
-D PYTHON_INCLUDE_DIR=/data/software/anaconda3/include/python3.7m \
-D PYTHON_PACKAGES_PATH=/data/software/anaconda3/lib/python3.7/site-packages \
-D OPENCV_EXTRA_MODULES_PATH=/datanfs/opencv-4.4.0/opencv_contrib/modules/ \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF ..
直接上cmake 没有gui的同学们直接拿,是我按照下面的步骤一步步写出来的cmake。
有gui的同学看这里(此部分参考了网上大佬们的,直接拿过来的图片,并加入了配置自己环境的修改,网址我忘了,看到的同学和作者可以联系我注明出处):
安装OpenCV
Configure
安装cmake-gui
sudo apt-get install cmake-gui
进入/opencv-4.4.0目录,新建build目录,进入build目录并运行cmake-gui
cd /opencv-4.4.0
mkdir build
cd build
cmake-gui …
注意:cmake-gui后面的两个点不能丢
弹出的CMake图形化界面,确认上面的两个路径
/opencv-4.4.0
/opencv-4.4.0/build
- 点击Configure–>选择Unix Makefiles–>Finis。
- configure过程会下载一些文件,一般因为网络问题会出现下面的错误
- 这是因为下载ippicv_2020_lnx_intel64_20191018_general.tgz这个文件时出错,需要手动从github下载该文件,下载链接如下
https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20191018/ippicv
注:其他opencv版本如果不知道对应的文件,可以先Configure一次,完成后查看红色信息会找到对应的版本,从官网下载对应的文件即可,可以参考
- 将下载好的文件放在/home/username/software/opencv-4.4.0/3rdparty/ippicv目录下,并且打开该目录下的ippicv.cmake文件,将第42行的网址注释掉,改为
“file:/home/username/software/opencv-4.4.0/3rdparty/ippicv/”
- 保存后退出
-
- 重新Configure,没有红色错误,成功
-
Generate
Configure完成后,对4个地方进行修改:
CMAKE_BUILD_TYPE处选择Release,如果没有选项手动输入即可;下方的CMAKE_INSTALL_PREFIX保持默认路径/usr/local
OPENCV_EXTRA_MODULES_PATH处选择/home/username/software/opencv-4.4.0/opencv_contrib-4.4.0/下的modules目录
OPENCV_GENERATE_PKGCONFIG选项打勾,这一项是用来生成opencv.pc文件,很重要
如果没有生成去相应的目录下手动生成,可以直接百度。
BUILD_opencv_world选项打勾,默认是不勾选的,勾选后最后只会产生一个库文件
直接Generate通常会失败,同样是因为下载文件出错
所以我提前下载好,下载失败的文件有:
boostdesc_lbgm.i
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_48.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_120.i
face_landmark_model.dat
前面11个文件对应opencv_contrib-4.4.0目录下的/modules/xfeatures2d/中的文件,最后一个文件face_landmark_model.dat对应的是opencv_contrib-4.4.0目录下的/modules/face/中的文件
前7个文件的下载链接:
https://github.com/opencv/opencv_3rdparty/tree/contrib_xfeatures2d_boostdesc_20161012
第8个到第11个文件的下载链接:
https://github.com/opencv/opencv_3rdparty/tree/contrib_xfeatures2d_vgg_20160317
11个文件下载完成后全部复制到/home/username/software/opencv-4.4.0/opencv_contrib-4.4.0/modules/xfeatures2d/src目录下,然后进入home/username/software/opencv-4.4.0/opencv_contrib-4.4.0/modules/xfeatures2d/cmake目录中
打开download_boostdesc. cmake文件,把第27行的网址注释掉,改为
“file:/home/username/software/opencv-4.4.0/opencv_contrib-4.4.0/modules/xfeatures2d/src/”
同样的,打开download_vgg.cmake文件,把第21行的网址注释掉,改为
“file:/home/username/software/opencv-4.4.0/opencv_contrib-4.4.0/modules/xfeatures2d/src/”
face_landmark_model.dat的下载链接是:
https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat
这个链接不太好用,直接上网盘下载
下载后放入home/username/software/opencv-4.4.0/opencv_contrib-4.4.0/modules/face目录下,打开该目录下的CMakeLists.txt文件,把第19行的网址注释掉,改为
“file:/home/username/software/opencv-4.4.0/opencv_contrib-4.4.0/modules/face/”
重新Generate,出现Configuring done和Generating done后,确认没有红色报错
还有四个文件是需要下载的,下载后放入
opencv_contrib/modules/wechat_qrcode
并修改CMakeLists.txt
带CUDA编译
- 在搜索框中输入cuda,出现的所有选项都打勾
-
- 搜索test,出现的所有选项都取消勾选
- 选项ENABLE_FAST_MATH上打勾
- 再次点击Configure,出现Configuring done后,确认没有红色错误,确认找到CUDA和cuDNN
- 这时会出现一些新的选项,首先在CUDA_FAST_MATH选项后打勾
- 搜索cuda,确认所有选项都打勾
- 再次Generate,出现Configuring Done和Generating Done后,确认没有报错,确认找到CUDA和cuDNN,退出cmake-gui。
会出现sm35 sm50类似的错误 是因为老显卡的算力已经不支持 可以将52前的都删除。
make
- 打开终端,进入build目录
make
注:这里可以多线程编译,不过直接make出问题的概率小一点
问题:
Opencv make报错 Built target libprotobuf
回到cmake-gui
手动加:ENABLE_CXX11=1
在configure 再generate
再make
多线程:
(1)查看CPU核心数:nproc
(2)make -j20
等待一段时间,100%完成即可
执行:
sudo make install
再次出现100%,就成功了