目录
3.选择镜像(强烈建议在docker中编译,不影响物理机环境)
6.下载和安装Cmake(请勿用apt install安装)
1.确认显卡算力
英伟达显卡算力_WenZhaoYang123468的博客-CSDN博客
举例:
3080显卡,算力8.6
2.选择和算力匹配的CUDA版本
不同版本CUDA支持的算力_WenZhaoYang123468的博客-CSDN博客
举例:
算力8.6,选择CUDA11.1
3.选择镜像(强烈建议在docker中编译,不影响物理机环境)
选择合适的CUDA&cudnn版本镜像,查询网址:https://hub.docker.com/
举例:
此处选择英伟达官方的CUDA11.1-cudnn8.0开发版本镜像
4.下载opencv安装包
下载网址:Releases - OpenCV
5.下载opencv_contrib安装包
下载网址:Tags · opencv/opencv_contrib · GitHub
6.下载和安装Cmake(请勿用apt install安装)
下载网址:Download | CMake
安装依赖openssl(这个依赖务必安装!)
sudo apt-get install libssl-dev
解压安装
tar -zxvf cmake-3.24.1.tar.gz
./bootstrap
make -j8
sudo make install
查看cmake版本
cmake --version
如果成功输入版本信息,则编译安装成功
7.安装依赖
sudo apt install build-essential git pkg-config libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev libtbb2 libtbb-dev libdc1394-22-dev liblapack-dev libopenblas-dev checkinstall yasm libpq-dev libeigen3-dev libprotobuf-dev protobuf-compiler libgoogle-glog-dev libgflags-dev libhdf5-dev libgphoto2-dev libgtkglext1-dev libatlas-base-dev libopenblas-dev liblapack-dev liblapacke-dev ocl-icd-opencl-dev libvtk7-dev libboost-all-dev libhdf5-openmpi-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libx264-dev libxvidcore-dev v4l-utils unzip wget libavresample-dev
8.解压编译opencv和opencv_contrib
cd ~/Downloads/opencv-4.5.4
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.4/modules .. \
-DWITH_CUDA=1 \
-DCUDA_ARCH_BIN=8.6 \
-DENABLE_FAST_MATH=1 \
-DCUDA_FAST_MATH=1 \
-DWITH_CUBLAS=1 \
-DOPENCV_GENERATE_PKGCONFIG=1 \
..
make -j$(nproc) # 若只需要动态库,执行到此即可,动态库位于lib文件夹中
sudo make install
sudo ldconfig
注意2个地方:
(1)opencv_contrib的路径;
(2)CUDA_ARCH_BIN修改为自己显卡的算力。
9.常见报错
(1)Please check CUDA_ARCH_PTX or CUDA_ARCH_BIN in your build configuration
原因是:上一步生成的动态库和算力8.6是对应的,如果在其他算力的机器上就会报错。需要重新编译相应算力的动态库。