Windows系统下OpenCV+Contrib+CUDA配置(VS2017+OpenCV3.4.3+CUDA10.0)

2024-02-05 06:18

本文主要是介绍Windows系统下OpenCV+Contrib+CUDA配置(VS2017+OpenCV3.4.3+CUDA10.0),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文是在上一篇文章的基础上加入CUDA的配置,核心依然是使用Cmake对OpenCV+Contrib进行配置。配置过程中需要注意一些小细节的设置并且一定要有耐心。
上一篇文章链接:https://blog.csdn.net/stjuliet/article/details/83903619

目录

    • step1 运行环境和前期准备
    • step2 编译OpenCV和Contrib库(WITH CUDA)
    • step3 测试

step1 运行环境和前期准备

操作系统和其他基础配置请参考上文,这里只展示与上文不一样的地方。

笔者的显卡为NVIDIA GeForce GT730 (2GB),计算能力为3.5.

1、查看自己电脑配置的显卡是否为NVIDIA显卡,是否支持CUDA:
https://developer.nvidia.com/cuda-gpus

2、下载显卡驱动并安装:
https://www.nvidia.cn/Download/index.aspx?lang=cn
此步骤可以省略,安装CUDA时会自动安装显卡驱动程序

3、根据自己电脑的情况下载CUDA并安装:
https://developer.nvidia.com/cuda-toolkit
因笔者使用的是VS2017,因此只能选择CUDA10.0,如果需要使用其他版本可以直接搜索找到下载链接
建议选择精简版,并且不修改安装路径

驱动和CUDA的具体安装过程可参考下文:
https://blog.csdn.net/qq_30623591/article/details/82084113

step2 编译OpenCV和Contrib库(WITH CUDA)

笔者的配置过程参考了以下文章:
https://blog.csdn.net/fengbingchun/article/details/9831837
https://blog.csdn.net/qq_15947787/article/details/78534272
https://blog.csdn.net/Goerge_L/article/details/79777989
https://blog.csdn.net/mangobar/article/details/80459866

1、
在这里插入图片描述

在这里插入图片描述

2、
点击finish后等待第一次congfigure done。在上文的基础上勾选WITH_CUDA,并且在配置表中找到“OPENCV_EXTRA_MODULES_PATH”,设置其参数值为open_contrib源码包中的modules目录。如果想缩短编译和重新生成解决方案的时间,建议将BUILD_EXAMPLES去除。再次点击configure。

3、
第二次configure done并且没有红色时,点击generate,完成后直接点击open project或者到编译输出目录下找到OpenCV.sln使用自己的VS打开此解决方案,打开解决方案后在x64 debug下重新生成解决方案。
重新生成过程中如果遇到提示“某个项目外部环境已更改”,选择全部重新加载即可。
配置CUDA的情况下,重新生成解决方案的时间很长,平均都要2-3小时,耐心等待吧。

接着找到CMakeTargets中的INSTALL,然后右键选择“仅用于项目”–>“仅生成INSTALL”。
生成结束后,按照之前的方法,新建解决方案后在属性管理器中把包含目录、库目录和附加依赖项配置好。
包含目录和库目录可以参考上一篇配置的文章。
附加依赖项(与之前有所不同,多了一些cuda的模块):
opencv_aruco343d.lib
opencv_bgsegm343d.lib
opencv_bioinspired343d.lib
opencv_calib3d343d.lib
opencv_ccalib343d.lib
opencv_core343d.lib
opencv_cudaarithm343d.lib
opencv_cudabgsegm343d.lib
opencv_cudacodec343d.lib
opencv_cudafeatures2d343d.lib
opencv_cudafilters343d.lib
opencv_cudaimgproc343d.lib
opencv_cudalegacy343d.lib
opencv_cudaobjdetect343d.lib
opencv_cudaoptflow343d.lib
opencv_cudastereo343d.lib
opencv_cudawarping343d.lib
opencv_cudev343d.lib
opencv_datasets343d.lib
opencv_dnn343d.lib
opencv_dpm343d.lib
opencv_face343d.lib
opencv_features2d343d.lib
opencv_flann343d.lib
opencv_fuzzy343d.lib
opencv_highgui343d.lib
opencv_img_hash343d.lib
opencv_imgcodecs343d.lib
opencv_imgproc343d.lib
opencv_line_descriptor343d.lib
opencv_ml343d.lib
opencv_objdetect343d.lib
opencv_optflow343d.lib
opencv_phase_unwrapping343d.lib
opencv_photo343d.lib
opencv_plot343d.lib
opencv_reg343d.lib
opencv_rgbd343d.lib
opencv_saliency343d.lib
opencv_shape343d.lib
opencv_stereo343d.lib
opencv_stitching343d.lib
opencv_structured_light343d.lib
opencv_superres343d.lib
opencv_surface_matching343d.lib
opencv_text343d.lib
opencv_tracking343d.lib
opencv_video343d.lib
opencv_videoio343d.lib
opencv_videostab343d.lib
opencv_xfeatures2d343d.lib
opencv_ximgproc343d.lib
opencv_xobjdetect343d.lib
opencv_xphoto343d.lib

注:重新生成解决方案不报错那自然是最好的了,笔者试了好几次,只有第一次完全正确,之后总是有少许错误,虽然不影响最后的install结果,但是会少1-2个lib,可能有些功能就无法使用了。经过多次测试,笔者发现如果某一个项目没有成功生成,可以直接到编译输出目录下的modules文件夹中找到未成功的项目名称文件夹,打开对应的.sln文件重新生成解决方案,再到CMakeTargets中生成INSTALL。这种方法不需要对所有项目再全部重新生成一遍,可以节约很多时间。

step3 测试

测试的目的主要是检测OpenCV是否正确配置好CUDA,是否可以使用GPU进行加速。
测试代码主要有以下三种:

//OpenCV3以后将命名空间变为cv::cuda, 原先是cv::gpu//测试显卡方法1(此方法可以读取显卡型号)cv::cuda::printShortCudaDeviceInfo(cv::cuda::getDevice());//测试显卡方法2int iDevicesNum = cv::cuda::getCudaEnabledDeviceCount();cout << iDevicesNum << endl;//测试显卡方法3cv::cuda::DeviceInfo _deviceInfo;bool _isDeviceOK = _deviceInfo.isCompatible();std::cout << "IsGPUDeviceOK : " << _isDeviceOK << std::endl;

如果抛出no cuda support的错误,可以将编译输出目录->install->x64->vc15->bin下的opencv_core343d.dll复制到C盘Windows的system32和64目录下。

网上找的测试代码,使用ORB提取单幅图像的特征点:
https://blog.csdn.net/m0_37857300/article/details/79039214
测试图片来自于毛星云《OpenCV3编程入门》配套电子资料。
在这里插入图片描述

断断续续摸索了一个星期多的时间,配置过程磕磕绊绊,总算把遇到的各种问题都解决了,但是因为各种因素,笔者打算弃用VS2017,转为之前一直使用的VS2015,因此此文写得较为简单,下文会详细写VS2015的CUDA配置过程。
非常感谢博客上关于CUDA配置的各种攻略和资源。

Juliet 于 2018.11

这篇关于Windows系统下OpenCV+Contrib+CUDA配置(VS2017+OpenCV3.4.3+CUDA10.0)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/679975

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数