点击上方“小白学视觉”,选择加”星标“或“置顶”
OpenCV4 + CUDA 从配置到代码…..
引子
一直有人在研习 问我,怎么去做OpenCV + CUDA的加速支持。其实 上用搜索引擎就可以找到一堆文章,但是其实你会发现,按照他们的做法基本都不会成功,原因是因为文章中使用的OpenCV版本太老旧、英伟达GPU的CUDA库也太久远。其实这个都不是主要原因,真实原因是OpenCV4跟之前的版本,编译CUDA的方法不一样了。所以感觉有必要自己写一遍,作为全 第一个OpenCV4 + CUDA + GPU编译与代码测试的教程给大家。希望大家都可以获得此技能,整个教程分为如下几个部分:
1. CUDA软件安装与配置
2. OpenCV+cmake编译CUDA模块支持
3. 代码实现与测试
4. 模块支持与应用场景
在开始教程之前,先说一下相关软件与版本信息
Windows 10 64bit
英伟达CUDA 10.0
OpenCV 4.1.0
OpenCV扩展模块4.1.0
GTX 1050 TI
VS2015 专业版
CMake 3.13.4
CUDA软件安装与配置
01
首先确保你有英伟达的独立显卡(GPU),然后请到英伟达官方 站,在线检查与下载最新的显卡驱动版本。地址如下:
安装/更新好驱动之后,就可以下载对应版本的CUDA工具包,下载地址如下:
下载好之后,就可以开始进行安装,只要默认安装即可。关于CUDA的安装与配置,更加详细的内容可以参考这里:
上面的文章中已经详细交代了。安装好之后我们就完成了第一步操作。
OpenCV+CMake编译
02
首先安装好CMake,下载地址如下:
其次需要下载OpenCV与OpenCV扩展模块的源代码,地址如下:
下载好之后解压缩到D盘指定目录即可。
打开CMake,设置好源码路径与编译输出路径之后,显示如下:
然后点击【Finish】完成config之后,再点击【generate】按钮。
编译CUDA与扩展模块
完成上述操作之后,然后找到OPENCV_EXTRA_MODULE_PATH设置扩展模块的源代码路径。设置以后,在搜索框中输入CUDA,
上述两个选项打勾之后,再次点击【configure】按钮,完成之后,显示如下:
这个时候去cudabuild这里目录下,双击打开OpenCV.sln(VS2015工程文件),选择CMake_Targets -> ALL_BUILD,然后右键->生成,完成之后,再选择INSTALL右键生成。这个过程时间会比较久一点,估计会有一个小时到两个小时左右,跟电脑性能有关系。完成之后,你就会看到再cudabuild目录下多出一个install目录,这个就是我们编译得到支持CUDA版本的OpenCV。打开检查一下:

我的是今天早晨刚刚完成编译的。然后按照正常的OpenCV配置,配置好VS2015+OpenCV开发环境。如果还不知道怎么配置,看这里:
这里需要特别注意一点,我这里没有勾选生成opencv_world,主要是怕编译过程中有模块出错,会导致生产失败,所以就每个模块生成一个lib/dll的库。配置的lib链接器的时候,需要把下面的库文件全部加入:
opencv_aruco410d.lib
opencv_bgsegm410d.lib
opencv_bioinspired410d.lib
opencv_calib3d410d.lib
opencv_ccalib410d.lib
opencv_core410d.lib
opencv_cudaarithm410d.lib
opencv_cudabgsegm410d.lib
opencv_cudacodec410d.lib
opencv_cudafeatures2d410d.lib
opencv_cudafilters410d.lib
opencv_cudaimgproc410d.lib
opencv_cudalegacy410d.lib
opencv_cudaobjdetect410d.lib
opencv_cudaoptflow410d.lib
opencv_cudastereo410d.lib
opencv_cudawarping410d.lib
opencv_cudev410d.lib
opencv_datasets410d.lib
opencv_dnn410d.lib
opencv_dnn_objdetect410d.lib
opencv_dpm410d.lib
opencv_face410d.lib
opencv_features2d410d.lib
opencv_flann410d.lib
opencv_fuzzy410d.lib
opencv_gapi410d.lib
opencv_hfs410d.lib
opencv_highgui410d.lib
opencv_imgcodecs410d.lib
opencv_imgproc410d.lib
opencv_img_hash410d.lib
opencv_line_descriptor410d.lib
opencv_ml410d.lib
opencv_objdetect410d.lib
opencv_optflow410d.lib
opencv_phase_unwrapping410d.lib
opencv_photo410d.lib
opencv_plot410d.lib
opencv_quality410d.lib
opencv_reg410d.lib
opencv_rgbd410d.lib
opencv_saliency410d.lib
opencv_shape410d.lib
opencv_stereo410d.lib
opencv_stitching410d.lib
opencv_structured_light410d.lib
opencv_superres410d.lib
opencv_surface_matching410d.lib
opencv_text410d.lib
opencv_tracking410d.lib
opencv_video410d.lib
opencv_videoio410d.lib
opencv_videostab410d.lib
opencv_xfeatures2d410d.lib
opencv_ximgproc410d.lib
opencv_xobjdetect410d.lib
opencv_xphoto410d.lib
特别提醒,千万不要copy我的,因为也许你的版本不是OpenCV4.1.0,或者你的编译生成有模块失败,没有我这么多lib文件。这样我们就完成了CUDA编译支持。这里需要特别注意的,在VS2015编译阶段,必须先选择ALL_BUILD,切记!
OpenCV代码测试与运行
03
OpenCV4支持CUDA运行的模块,主要包括 图像处理、视频读写、视频分析、传统的对象检测包括HOG、级联检测器、特征提取部分、卷积滤波与图像二值分析、图像分割模块。这里我在OpenCV提供的示例代码基础上稍加改动,实现了一个基于背景分割的视频分析程序:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!