OpenCV4 编译在Linux

269 阅读2分钟

1 准备条件

1.1 安装必备的软件包

sudo apt-get update

sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-dev 

如果想要使用sfm包,需要安装以下:

sudo apt install libeigen3-dev libgflags-dev libgoogle-glog-dev libsuitesparse-dev

1.2、cuda及cudnn安装

如果不需要GPU加速的话,不需要安装,直接跳过。

安装cuda:

cuda历史版本网址:https://developer.nvidia.com/cuda-toolkit-archive

下载cuda

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run

安装:

sudo sh cuda_11.8.0_520.61.05_linux.run

只选择cuda的安装,不安装驱动和内核

cudnn 安装

cudnn下载网址:https://developer.nvidia.com/cudnn 需要注册nvidia账号

我选择的是 cudnn v8.9.0 for cuda 11.x ,下载的是tar包

解压tar包 tar -xvf cudnn-linux-x86_64-8.9.0.131_cuda11-archive.tar.xz

复制文件到cuda安装路径下

cp -rf /home/cudnn-linux-x86_64-8.9.0.131_cuda11-archive/lib/* /usr/local/cuda/lib64

cp -rf /home/cudnn-linux-x86_64-8.9.0.131_cuda11-archive/include/* /usr/local/cuda/include

2、源码下载

git clone https://github.com/opencv/opencv
git clone https://github.com/opencv/opencv_contrib

切换版本分支

切换 opencv 分支:
git checkout 4.8.1
切换opencv_contrib 分支
git checkout 4.8.1

opencv_version

3、编译

cd /home/opencv   
mkdir build
cd build

执行:

cmake过程中会从github上下载文件,建议采用代理或者直接将.cache文件夹拷贝到自己的里面去

如果不需要编译cuda

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/build -D INSTALL_PYTHON_EXAMPLES=OFF -D INSTALL_C_EXAMPLES=ON -D OPENCV_ENABLE_NONFREE=ON -D WITH_TBB=ON-D OPENCV_EXTRA_MODULES_PATH=/home/opencv_contrib/modules -D BUILD_opencv_python3=OFF -D BUILD_opencv_python2=OFF -D BUILD_EXAMPLES=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_PC_FILE_NAME=opencv4.pc ..

需要cuda编译

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/build -D INSTALL_PYTHON_EXAMPLES=OFF -D INSTALL_C_EXAMPLES=ON -D OPENCV_ENABLE_NONFREE=ON -D WITH_TBB=ON -D WITH_CUDA=ON -D OPENCV_DNN_CUDA=ON -D WITH_CUDNN=ON -D CUDA_FAST_MATH=1 -D CUDA_ARCH_BIN=8.6 -D WITH_CUBLAS=1 -D OPENCV_EXTRA_MODULES_PATH=/home/opencv_contrib/modules -D BUILD_opencv_python3=OFF -D BUILD_opencv_python2=OFF -D BUILD_EXAMPLES=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_PC_FILE_NAME=opencv4.pc ..

CUDA_ARCH_BIN的数值根据显卡的型号从下面网站获取:

https://developer.nvidia.com/cuda-gpus

CMAKE_INSTALL_PREFIX opencv的安装路径

OPENCV_EXTRA_MODULES_PATH opencv_contrib的modules目录路径

opencv_modules.jpg

sudo make -j14
其中14表示线程数

4、安装

1、sudo make install

2、cp /home/build/lib/pkgconfig/opencv4.pc /usr/lib/pkgconfig

将opencv4.pc文件移动到/usr/lib/pkgconfig/路径下

至此:opencv已经安装到了/home/build文件夹下

如果opencv的安装包想要放到其他路径下,需要修改opencv4.pc中的prefix路径,如:

想要把opencv移动到/usr/local/opencv下,需要将opencv4.pc中的prefix=/home/build改为prefix=/usr/local/opencv

5、判断

pkg-config --modversion opencv4

如果输出4.8.1 则为正确