本教程所有步骤均来源于OpenCV官网,由于系统环境版本等因素做了微小的改动。
首先安装依赖和编译器等
1
| sudo apt update && sudo apt install -y build-essential cmake g++ wget unzip git
|
下载源码并解压
1 2 3 4 5 6 7
| mkdir -p opencv && cd opencv wget -O opencv.zip https://codeload.github.com/opencv/opencv/zip/4.5.1 wget -O opencv_contrib.zip https://codeload.github.com/opencv/opencv_contrib/zip/4.5.1 unzip opencv.zip unzip opencv_contrib.zip mv opencv-4.5.1 opencv mv opencv_contrib-4.5.1 opencv_contrib
|
编译
1 2 3
| mkdir -p build && cd build cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ../opencv cmake --build .
|
自定义编译选项
上面使用的是官方默认的编译配置,OpenCV提供了众多编译选项,其中一些选项默认是开启的,一些是关闭的。具体内容可参考官方指南,由于我本机安装了MiniConda, CUDA和CUDNN等NVIDIA软件包进行GPU推理加速,所以我使用了如下配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") \ -DOPENCV_ENABLE_NONFREE=ON \ -DWITH_CUDA=ON \ -DWITH_CUBLAS=ON \ -DWITH_CUDNN=ON \ -DWITH_NVCUVID=ON \ -DOPENCV_DNN_CUDA=ON \ -DENABLE_FAST_MATH=1 \ -DCUDA_FAST_MATH=1 \ -DBUILD_opencv_python3=ON \ -DHAVE_opencv_python3=ON \ -DPYTHON3_EXECUTABLE=$(which python3) \ -DPYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \ -DPYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \ -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.2/modules ../opencv-4.5.2
|
其中WITH_CUDA, WITH_CUBLAS, OPENCV_DNN_CUDA等为开启CUDA, PYTHON3_XXX为设置python3环境,编译完成后opencv库将安装至python环境中,其他选项可参考官方文档中Deep learning段落。
输出如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| -- NVIDIA CUDA: YES (ver 11.4, CUFFT CUBLAS FAST_MATH) -- NVIDIA GPU arch: 35 37 50 52 60 61 70 75 80 86 -- NVIDIA PTX archs: -- -- cuDNN: YES (ver 8.2.1) -- -- OpenCL: YES (no extra features) -- Include path: /home/user/opencv/opencv/3rdparty/include/opencl/1.2 -- Link libraries: Dynamic load -- -- Python 3: -- Interpreter: /home/user/miniconda3/envs/yansi/bin/python3 (ver 3.8.13) -- Libraries: /home/user/miniconda3/envs/yansi/lib/libpython3.8.so (ver 3.8.13) -- numpy: /home/user/miniconda3/envs/yansi/lib/python3.8/site-packages/numpy/core/include (ver 1.23.0) -- install path: /home/user/miniconda3/envs/yansi/lib/python3.8/site-packages/cv2/python-3.8
|
其中需要注意CUDA和cuDNN是不是YES,另外如果要在python中使用opencv的话,则需要注意python的配置是否正确
根据自己的CPU核心数量*2进行编译
1 2
| make -j8 sudo make install
|
#重新加载动态链接库