opencv_contrib 添加cuda支持

本文介绍如何从源码编译支持CUDA的OpenCV库,并整合OpenCV_contrib扩展库,详细步骤包括环境搭建、配置cmake参数及解决依赖问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们如果要想使用opencv中的gpu模块,就必须再一次编译opencv中cuda模块,因为我们默认下载的opencv官方库下的build文件夹下是没有cuda模块的lib,dll文件的。因此我们需要再一次编译opencv的sources源码。

在这里我不仅添加了opencv_contirb的扩展库,同时也添加了cuda支持。

首先,要想使用cuda模块,就必须要确保你的显卡是nvidia的。

1.需要用到的库:

cuda-tookit 库地址: https://developer.nvidia.com/cuda-toolkit
Intel TBB   https://www.threadingbuildingblocks.org/download
注意:在下载完这些库后自己添加环境变量(除了cuda-tooikit,安装cuda-tookit后自动添加)
如:OpenCV:  H:\Program_Project_Code\OpenCV_lib\opencv3.1.0\build\bin
Intel TBB:D:\data\lntel TBB\tbb44_20160526oss_win\tbb44_20160526oss\bin\intel64\vc1


2.下载cmake(最好是2.4.3版,用2.4.6有莫名其妙的错误)

   

source code :
源代码路径为 OpenCV最新主库的路径(如:我的路径:   H:\Program_Project_Code\OpenCV_lib\opencv3.1.0\sources)
build the binaries:
你想编译在哪个文件夹(如:H:\Program_Project_Code\OpenCV_lib\OpenCV3.1_Contrib_CUDA7.5\build)
----------》
按“Configure”选择编译器



3.配置:
  勾选WITH_CUDA,WITH_CUBLAS,WITH_CUFFT,WITH_OPENGL,WITH_TBB,WITH_IPP,WITH_EIGEN
  可以选择取消一些不必要选项:如:BUILD_DOCS,BUILD_EXAMPLES
  找出OPENCV_EXTRA_MODULES_PATH选项,设置路径,即为你下载opencv_contrib库的路径(如:          H:\Program_Project_Code\OpenCV_lib\opencv_contrib-master\opencv_contrib-master\modules)
  
再按 “Configure”,
选项TBB_INCLUDE_DIRS===》 选择你下载的Intel TBB的Includes路径(如:D:\data\lntel TBB\tbb44_20160526oss_win\tbb44_20160526oss\include)
再按 “Configure”,
检查选项TBB_LIB_DIR和TBB_STDDEF_PATH的路径是否正确
(如: TBB_LIB_DIR 的路径: D:\data\lntel TBB\tbb44_20160526oss_win\tbb44_20160526oss\lib\intel64\vc12
TBB_STDDEF_PATH 的路径:D:\data\lntel TBB\tbb44_20160526oss_win\tbb44_20160526oss\include\tbb\tbb_stddef.h
再按 “Configure”,出现“configure done”
则再按“Generate”出现“generate done”则说明 cmake编译成功。

4.编译
回到一开始自己建立的编译的文件夹( H:\Program_Project_Code\OpenCV_lib\OpenCV3.1_Contrib_CUDA7.5\build
   打开OpenCV.sln文件,找到:CMakeTargets下的INSTALL 右键选择“生成”。。。。。等待完成。若不成功出现失败,可以再“重新生成”(编译时间较长)

5.使用上述生成的支持cuda,opencv_contirb库
配置环境变量:H:\Program_Project_Code\OpenCV_lib\OpenCV3.1_Contrib_CUDA7.5\build\x64\v120\bin

提示:
在使用gpu模块下,要注意将支持cuda的库的环境变量设置在其他opencv库的环境变量的前面,因为这样会避免冲突。(如 我们在官网下载的官方opencv库build下的opencv_core310d.dll和我们上面编译的支持cuda的库下的opencv_core310d.dll,动态链接库文件名称是一样的,但一个是有cuda支持的,另一个是没有cuda支持的,因此,我们要将有cuda支持的库的bin目录至于环境变量目录路径前面

### 安装带有CUDA支持OpenCVOpencv_contrib #### 准备工作 为了确保顺利安装带CUDA加速功能的OpenCV及其贡献模块,在开始之前需确认已正确配置好开发环境,包括但不限于更新系统软件包列表、安装必要的依赖项等。 ```bash sudo apt-get update && sudo apt-get upgrade -y ``` #### 安装依赖库 安装构建过程中所需的各类工具与库文件: ```bash sudo apt-get install 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 libhdf5-dev \ cuda-cudart-dev-11-8 libcublas-dev-11-8 \ cuda-command-line-tools-11-8 -y ``` 以上命令会安装一系列用于图像处理和支持CUDA运算的基础组件[^2]。 #### 下载源码 获取指定版本号的OpenCV及对应的contrib扩展库压缩包,并将其放置在同一目录内以便后续操作。 ```bash wget https://github.com/opencv/opencv/archive/refs/tags/4.4.0.zip unzip 4.4.0.zip mv opencv-4.4.0 ~/opencv cd ~/ wget https://github.com/opencv/opencv_contrib/archive/refs/tags/4.4.0.zip unzip 4.4.0.zip mv opencv_contrib-4.4.0 ~/opencv_contrib ``` 这里选择了`4.4.0`作为示例版本;实际应用时可根据需求调整至最新稳定版或其他特定版本[^4]。 #### 编译设置 进入刚刚创建好的`build`文件夹执行如下指令完成编译前准备工作: ```bash mkdir -p ~/opencv/build && cd ~/opencv/build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON \ -D WITH_CUDA=ON \ -D CUDA_ARCH_BIN="7.5" \ .. ``` 注意:上述参数中的`CUDA_ARCH_BIN`应根据所使用的GPU架构适当修改。此步骤旨在告知CMake使用哪些额外的功能选项来优化最终产物性能表现。 #### 构建项目 启动多线程模式加快编译速度,完成后即刻进行全局范围内的安装部署动作: ```bash make -j$(nproc) sudo make install sudo ldconfig ``` 至此整个过程结束,现在应该可以在Ubuntu平台上成功运行具备CUDA硬件加速特性的OpenCV程序了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值