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使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定