OpenCV 截图编译过程。
安装预编译版本OpenCV可能会导致你不能充分利用它cuda硬件,而cuda硬件在GPU加速非常强大。
在本文中,我们将使用它 CUDA 和 cuDNN 从源代码构建预安装环境 OpenCV。
1. 先决条件
1.1 CUDA 和 cuDNN
安装的主要先决条件是安装 NVIDIA CUDA 工具包和 NVIDIA CUDA 深度神经网络库 (cuDNN) 库。
如果您还没有安装这些,建议您按照我以前的指南安装它们:
https://medium.com/@juancrrn/installing-cuda-and-cudnn-in-ubuntu-20-04-for-deep-learning-dad8841714d6
让我们继续依赖关系。
1.2 依赖项
需要 CMake 和 GCC 配置安装编译项目:
$sudoaptinstallcmake $sudoaptinstallgccg
为了支持 Python 3 我们需要安装 Python(大多数 Ubuntu 所有版本都预装了),Python-devel 和 Numpy:
$sudoaptinstallpython3python3-devpython3-numpy
GUI 功能,相机支持 (v4l)、媒体支持 (ffmpeg、gstreamer...) 等都需要 GTK:
$sudoaptinstalllibavcodec-devlibavformat-devlibswscale-dev $sudoaptinstalllibgstreamer-plugins-base1.0-devlibgstreamer1.0-dev $sudoaptinstalllibgtk-3-dev
下一个依赖项是可选的,但添加正确 PNG、JPEG、JPEG2000、TIFF、WebP 最新支持等格式:
$sudoaptinstalllibpng-devlibjpeg-devlibopenexr-devlibtiff-devlibwebp-dev
现在,使用 Git 下载 OpenCV 存储库:
$gitclonehttps://github.com/opencv/opencv.git
我们也会下载 OpenCV 的额外模块 (CMake flag -D OPENCV_EXTRA_MODULES_PATH
) 存储库。这些模块需要这些模块。 CUDA 功能与 OpenCV 一起使用。
$gitclonehttps://github.com/opencv/opencv_contrib.git
2.确定CUDA架构版本
CMake 需要 CUDA_ARCH_BIN
设置标志使用正确 CUDA 架构编译二进制文件。如果该标志没有正确设置,则二进制文件的最终使用将失败。
要正确设置标志,首先要使用nvidia-smi -L
命令确定 NVIDIA GPU 型号:
现在转到https://developer.nvidia.com/cuda-gpus并查找你的 GPU 型号。
就我而言,我必须启用它 CUDA 的 GeForce 和 TITAN 产品,然后找到 GeForce GTX 1050:
在型号名旁边,你会发现的 GPU 计算能力 NVIDIA GPU 架构版,它将是 CMake 标志的值:CUDA_ARCH_BIN=6.1
.
3.准备使用CUDA和cuDNN支持编译
我们将使用一堆 CMake 标志来编译 OpenCV。本文末尾可以找到这些详细参考。
准备建设目录:
$cd~/opencv $mkdirbuild $cdbuild
使用以下标志进行操作 CMake:
cmake\ -DCMAKE_BUILD_TYPE=RELEASE\ -DCMAKE_INSTALL_PREFIX=/usr/local\ -DWITH_CUDA=ON\ -DWITH_CUDNN=ON\ -DWITH_CUBLAS=ON\ -DWITH_TBB=ON\ -DOPENCV_DNN_CUDA=ON\ -DOPENCV_ENABLE_NONFREE=ON\ -DCUDA_ARCH_BIN=6.1\ -DOPENCV_EXTRA_MODULES_PATH=$HOME/opencv_contrib/modules\ -DBUILD_EXAMPLES=OFF\ -DHAVE_opencv_python3=ON\ ..
您应该有类似于以下输出的输出:
... --TheCXXcompileridentificationisGNU9.4.0 ... --PerformingTest... ... --GeneralconfigurationforOpenCV4.5.5-dev====================== ... --NVIDIACUDA:YES(ver11.6,CUFFTCUBLAS) --NVIDIAGPUarch:61 --NVIDIAPTXarchs: -- --cuDNN:YES(ver8.3.2) ... --Configuringdone --Generatingdone --Buildfileshavebeenwrittento:/home/j/opencv/build
这表明预建设是成功的。
4. 编译支持GPU加速的OpenCV
如果 CMake 没有错误,我们可以编译 OpenCV。
我们只需要知道我们的 CPU 有多少个内核可用?为此,请使用以下内核。lscpu
命令:
查找CPU(s)
我们将在下一个命令中使用设置。
最终编译OpenCV,使用make
和-j
或 --jobs
选项,指定要同时运行的作业数,其值必须等于我们以前发现的内核数:
$ make -j 8
就我而言,完全完成需要半个小时。
5. 安装 OpenCV
在通过 CUDA 和 cuDNN 编译支持 GPU 加速的 OpenCV 后,我们就可以像下载预编译包一样安装它了。
在build
目录中,运行以下命令:
$ sudo make install
然后用于ldconfig
创建必要的链接并缓存到我们新安装的 OpenCV:
$ sudo ldconfig
最后一步是为 Python 3 创建指向 OpenCV 绑定的符号链接,以供全局使用。如果你使用默认的 Ubuntu 安装,这是必需的,因为它的可执行文件会在目录中查找包dist-packages
,并且默认在site-packages
安装 OpenCV 。
为此,请运行以下命令:
$ sudo ln -s /usr/local/lib/python3.8/site-packages/cv2 /usr/local/lib/python3.8/dist-packages/cv2
使用 python3
解释器和 cv2.cuda.printCudaDeviceInfo(0)
来验证库是否正常工作:
就是这样。
清理
安装后,有些文件我们将不再需要,可以安全删除:
$ cd ~
$ rm -rf opencv opencv_contrib
使用的 CMake 标志参考
CMAKE_BUILD_TYPE =RELEASE:禁用调试选项
https://docs.opencv.org/4.x/db/d05/tutorial_config_reference.html#tutorial_config_reference_general_debug
CMAKE_INSTALL_PREFIX =/usr/local: 设置生成的二进制文件的根目录
https://docs.opencv.org/4.x/db/d05/tutorial_config_reference.html#tutorial_config_reference_install_root
WITH_CUDA =ON:启用 CUDA 支持
https://docs.opencv.org/4.x/db/d05/tutorial_config_reference.html#tutorial_config_reference_func_hetero
WITH_CUDNN=ON:(未记录)启用 cuDNN 支持
WITH_CUBLAS=ON:(未记录)启用 cuBLAS 支持
WITH_TBB =ON:使用线程构建块启用并行编程
https://docs.opencv.org/4.x/db/d05/tutorial_config_reference.html#tutorial_config_reference_func_core
OPENCV_DNN_CUDA =ON:启用 CUDA 后端并构建
dnn
模块(需要 CUDA、cuDNN 和 cuBLAS)https://docs.opencv.org/4.x/db/d05/tutorial_config_reference.html#tutorial_config_reference_dnn
OPENCV_ENABLE_NONFREE =ON:启用受专利保护的算法
https://docs.opencv.org/4.x/db/d05/tutorial_config_reference.html#tutorial_config_reference_misc
CUDA_ARCH_BIN =6.1:指定NVIDIA GPU架构版本(参考第3节)
https://github.com/opencv/opencv/blob/4.x/cmake/OpenCVDetectCUDA.cmake#L217
OPENCV_EXTRA_MODULES_PATH =$HOME/opencv_contrib/modules:包含 OpenCV 的额外模块
https://docs.opencv.org/4.x/db/d05/tutorial_config_reference.html#tutorial_config_reference_general_contrib
BUILD_EXAMPLES =OFF:禁用构建示例
https://docs.opencv.org/4.x/db/d05/tutorial_config_reference.html#tutorial_config_reference_general_tests
HAVE_opencv_python3 =ON:强制依赖
opencv_python3
https://docs.opencv.org/4.x/db/d05/tutorial_config_reference.html#tutorial_config_reference_func
来源
在 Ubuntu 中安装 OpenCV-Python:https://docs.opencv.org/4.5.5/d2/de6/tutorial_py_setup_in_ubuntu.html
OpenCV 安装概述:https://docs.opencv.org/4.x/d0/d3d/tutorial_general_install.html
OpenCV 配置选项参考:https://docs.opencv.org/4.x/db/d05/tutorial_config_reference.html
OpenCV 的额外模块存储库:https://github.com/opencv/opencv_contrib
如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。