ubuntu-编译安装支持CUDA的OpenCV

本文详细介绍如何使用cmake-gui配置并编译OpenCV源码,包括解决配置过程中的错误,如Python编译选项、环境变量配置及解决特定编译错误的方法。

终端运行

cmake-gui

配置源码

点击"configure"按钮,会显示很多配置项:

对于以上出现的错误项,事先下载好,配置再.cache文件夹下即可,


同时事先下载好opencv的第三方库extra。继续点击“configure”按钮:

如果需要Python编译,就修改一些Python编译的选项。

 以上红色信息是由OPENVB_GENERATE_STATUS该选项勾选造成的,可以去掉,也可以忽略。可以勾选掉java等选项,继续点击"configure",

可以配置OpenCV的Python编译环境、安装路径 prefix等,点击”configure“按钮, 

 直到需要的选项,没有出现红色的行为止:

然后点击 "Generate"按钮,即可。

这时候进入build路径,启动终端,点击”make“,

 

 编译过程中,有可能会出现以下错误:

这是因为在编译过程中,有可能环境变量没有配置完成:

配置环境变量的方法有两种,

一种是在/etc/profile文件中,配置LD_LIBRARY_PATH的值。

/usr/local/cuda-10.1/lib64:
/usr/local/opencv/lib:
/lib/x86_64-linux-gnu:
/usr/lib/x86_64-linux-gnu:
/home/pytorch/anaconda3/lib:

特别要注意/lib/x86_64-linux-gnu 和 /usr/lib/x86_64-linux-gnu,

如果需要python编译,而环境是由Anaconda环境搭建,那么一定要配置/home/pytorch/anaconda3/lib

一种是配置/etc/ld.so.conf,然后利用命令 ldconfig,将其缓存到/etc/ld.so.cache中去。

 

记录一些细节:

1:出现的红色提示信息,可以通过去掉 OPENCV_GENERATE_SETUPVARS的勾选框,默认是勾选的,

去掉勾选框即可:

2:有必要生成 OPENVB_GENERATE_PKGCONFIG,这样就可以使用PKG_CONFIG命令了,勾选此选项:

3:出现了一下错误:

/home/pytorch/anaconda3/lib/libpng16.so.16: undefined reference to `inflateValidate@ZLIB_1.2.9'
collect2: error: ld returned 1 exit status
modules/world/CMakeFiles/opencv_perf_superres.dir/build.make:124: recipe for target 'bin/opencv_perf_superres' failed
make[2]: *** [bin/opencv_perf_superres] Error 1
CMakeFiles/Makefile2:2744: recipe for target 'modules/world/CMakeFiles/opencv_perf_superres.dir/all' failed
make[1]: *** [modules/world/CMakeFiles/opencv_perf_superres.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
(base) pytorch@pytorch-MS-7C22:~/Gram/softWare/opencv-4.3.0-build$ pip install --upgrade libpng
Collecting libpng
  ERROR: Could not find a version that satisfies the requirement libpng (from versions: none)
ERROR: No matching distribution found for libpng
(base) pytorch@pytorch-MS-7C22:~/Gram/softWare/opencv-4.3.0-build$ pip install libpng
Collecting libpng
  ERROR: Could not find a version that satisfies the requirement libpng (from versions: none)
ERROR: No matching distribution found for libpng
(base) pytorch@pytorch-MS-7C22:~/Gram/softWare/opencv-4.3.0-build$ pip install l(base) pytorch@pytorch-MS-7C22:~/Gram/softWare/opencv-4.3.0-build$ sudo apt-get install libpng16-16
[sudo] password for pytorch: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  fonts-mathjax javascript-common libboost-python1.58.0 libboost-thread1.58.0
  libcublas7.5 libcudart7.5 libcufft7.5 libcufftw7.5 libcuinj64-7.5
  libcurand7.5 libcusolver7.5 libcusparse7.5 libjs-jquery libjs-mathjax
  libjs-sphinxdoc libjs-underscore liblapack3 libnppc7.5 libnppi7.5 libnpps7.5
  libnvblas7.5 libnvrtc7.5 libnvtoolsext1 libnvvm3 libthrust-dev libvdpau-dev
  nvidia-cuda-doc nvidia-cuda-gdb nvidia-opencl-dev nvidia-profiler
  nvidia-visual-profiler opencl-headers python-pycuda-doc python3-appdirs
  python3-decorator python3-numpy python3-pytools
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
  libpng16-16
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 172 kB of archives.
After this operation, 415 kB of additional disk space will be used.
Get:1 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 libpng16-16 amd64 1.6.20-2 [172 kB]
Fetched 172 kB in 1s (100 kB/s)                        
Selecting previously unselected package libpng16-16:amd64.
(Reading database ... 251701 files and directories currently installed.)
Preparing to unpack .../libpng16-16_1.6.20-2_amd64.deb ...
Unpacking libpng16-16:amd64 (1.6.20-2) ...
Processing triggers for libc-bin (2.23-0ubuntu11) ...
/sbin/ldconfig.real: /usr/local/cuda-10.1/targets/x86_64-linux/lib/libcudnn.so.7 is not a symbolic link

Processing triggers for doc-base (0.10.7) ...
Processing 1 added doc-base file...
Setting up libpng16-16:amd64 (1.6.20-2) ...
Processing triggers for libc-bin (2.23-0ubuntu11) ...
/sbin/ldconfig.real: /usr/local/cuda-10.1/targets/x86_64-linux/lib/libcudnn.so.7 is not a symbolic link

解决方法:

 在终端输入

sudo apt-get install libpng16-16

重新进行

make

然后顺利编译通过

### 安装支持 CUDAOpenCV 为了在 Ubuntu 20.04 上成功安装带有 CUDA 支持OpenCV,需遵循一系列特定步骤来确保兼容性和性能优化。以下是详细的指南: #### 准备工作环境 更新现有包列表并升级已安装软件包至最新版本[^1]。 ```bash sudo apt update && sudo apt upgrade -y ``` #### 安装依赖项 安装构建工具和其他必要的库文件。这一步骤对于后续编译过程至关重要。 ```bash sudo apt install build-essential cmake git pkg-config libgtk-3-dev \ libavcodec-dev libavformat-dev libswscale-dev python3-dev python3-numpy \ libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev \ gfortran openexr libatlas-base-dev protobuf-compiler \ libgoogle-glog-dev libgflags-dev libeigen3-dev \ libopenblas-dev liblapack-dev checkinstall yasm \ libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev \ libxvidcore-dev x264 v4l-utils ffmpeg qtbase5-dev \ qtchooser qt5-qmake qtbase5-dev-tools libvtk7-dev \ libdc1394-22-dev libharfbuzz-dev libfreetype6-dev \ libfontconfig1-dev libglu1-mesa-dev wget unzip curl \ doxygen graphviz imagemagick libprotobuf-dev \ libsuitesparse-dev libassimp-dev libceres-dev \ libpcl-dev libboost-all-dev libjsoncpp-dev \ libyaml-cpp-dev libgdal-dev libspatialindex-dev \ libgeos++-dev libqhull-dev libflann-dev \ libtinyxml2-dev liburdfdom-dev libconsole-bridge-dev \ ros-noetic-turtlebot3-msgs ros-noetic-sensor-msgs \ ros-noetic-nav-msgs ros-noetic-actionlib msgpack-python \ msgpack-cxx libopencv-contrib-dev libopencv-features2d-dev \ libopencv-flann-dev libopencv-highgui-dev libopencv-imgcodecs-dev \ libopencv-imgproc-dev libopencv-ml-dev libopencv-objdetect-dev \ libopencv-photo-dev libopencv-shape-dev libopencv-stitching-dev \ libopencv-superres-dev libopencv-ts-dev libopencv-video-dev \ libopencv-videostab-dev libopencv-xfeatures2d-dev \ libopencv-ximgproc-dev libopencv-aruco-dev libopencv-bgsegm-dev \ libopencv-bioinspired-dev libopencv_ccalib-dev \ libopencv-cvv-dev libopencv-datasets-dev \ libopencv-dpm-dev libopencv-face-dev libopencv-fuzzy-dev \ libopencv-hfs-dev libopencv-line_descriptor-dev \ libopencv-optflow-dev libopencv-phase_unwrapping-dev \ libopencv-plot-dev libopencv-reg-dev libopencv-rapid-dev \ libopencv-rgbd-dev libopencv-saliency-dev \ libopencv-sfm-dev libopencv-stereo-dev libopencv-structured_light-dev \ libopencv-text-dev libopencv-tracking-dev libopencv-wechat_qrcode-dev \ libopencv_xphoto-dev ``` 注意:上述命令中的部分依赖可能并非全部必需;具体需求取决于个人项目要求以及所使用的OpenCV模块[^2]。 #### 配置 NVIDIA 开发环境 下载并安装适用于系统的NVIDIA驱动程序、CUDA Toolkit 和 cuDNN SDK 。访问[NVIDIA官方网站](https://developer.nvidia.com/cuda-downloads),按照提示完成相应组件的选择与部署。 验证CUDA安装是否正确无误: ```bash nvcc --version nvidia-smi ``` #### 获取源码并编译 克隆官方GitHub仓库获取最新的OpenCV源代码,并切换到目标分支或标签页(此处假设为`master`)。创建一个新的构建目录用于存放生成文件,执行CMake配置脚本指定启用GPU加速选项以及其他个性化设置参数。 ```bash git clone https://github.com/opencv/opencv.git ~/opencv cd ~/opencv mkdir build cd build cmake .. -D CMAKE_BUILD_TYPE=Release \ -D WITH_CUDA=ON \ -D ENABLE_FAST_MATH=ON \ -D CUDA_ARCH_BIN="8.6" \ # 替换为你自己的 GPU 架构编号 -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ .. ``` > **重要**: `OPENCV_EXTRA_MODULES_PATH`指向额外功能模块路径,在此之前还需另行clone opencv_contrib仓库以解锁更多特性支持。 启动多线程模式加快编译速度,最后打包成deb格式便于分发给其他机器使用或者直接本地安装。 ```bash make -j$(nproc) sudo make install ``` 至此,已完成整个流程的操作说明。通过以上步骤可以实现在Ubuntu 20.04 LTS平台上顺利搭建起一套完整的基于CUDA硬件加速特性的计算机视觉开发框架——OpenCV
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值