【YOLO11实战项目】OpenCV+CUDA编译保姆级教程

Win10下CUDA版OpenCV的编译过程 本文记录了Win10系统下编译OpenCV4.6.0(含contrib和CUDA)的过程。 阅读详情
AI摘要

该博客是OpenCV+CUDA编译的保姆级教程。先介绍环境准备,包括安装必要软件和依赖库;接着说明下载OpenCV主仓库和Contrib仓库源码;然后进行CMake配置、生成VS解决方案并编译安装;最后验证CUDA支持,还给出常见问题的解决办法,可提升深度学习模型推理速度。


本文将详细介绍在 Windows环境下编译支持 YOLO11开发的带 CUDA的 OpenCV。整个过程分为 环境准备、源码下载、CMake配置、编译安装、验证测试五个步骤。 1


1 环境准备

1.1 安装必要软件

  • CUDA Toolkit:下载与本机NVIDIA显卡驱动兼容的版本(如CUDA 11.7)。
  • Visual Studio 2019:安装时勾选 C++ 桌面开发(包含MSVC编译器)。2
  • CMake:下载最新版并安装(CMake官网)。3
  • Python 3.x:可选,用于部分脚本支持。
  • Git:可选,用于下载源码。

1.2 安装依赖库(可选)

  • FFmpeg:用于视频编解码支持。
  • Intel TBB:多线程加速库。

2 下载源码

2.1 OpenCV 主仓库

git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 4.11.0  # 切换到最新版本(如4.11.0)

2.2 OpenCV Contrib 仓库

git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 4.11.0  # 与主仓库版本一致

注意:OpenCV Contrib的版本需要与OpenCV保持一致。YOLO11开发建议下载4.10.0及更高版本,亲测4.7.0版本不支持YOLO11。

2.3 手动下载源码

登陆Github OpenCV托管仓库下载对应源码时,需要选择正确的版本分支,如下图所示。
在这里插入图片描述


3 CMake配置

3.1 创建构建目录

在 opencv 主目录下新建 build 文件夹,用CMake GUI配置:

  1. Source Path: opencv 主目录(如 F:/opencv-4.11.0)。
  2. Build Path: build 目录(如 D:/opencv-4.11.0/build)。

CMake GUI构建目录如下图所示。
CMake GUI构建目录示意图

3.2 配置项目生成器

项目生成器配置如下图所示。
项目生成器配置示意图
如上图所示,本案例中项目生成器指定VS2017,编译平台选择x64,编译器选择本地默认即可。

3.3 关键配置选项(Visual Studio 2019/Visual Studio 2017)

选项名称值/操作
WITH_CUDA✔️ 启用CUDA支持
OPENCV_DNN_CUDA✔️ 启用DNN模块的CUDA加速
OPENCV_EXTRA_MODULES_PATH✔️ 指向 opencv_contrib/modules 目录
ENABLE_FAST_MATH✔️ 加速计算(可选)
BUILD_opencv_world✔️ 生成单个库文件(可选)
OPENCV_ENABLE_NONFREE✔️ 启用非免费模块(可选)
WITH_FFMPEG✖️ 用于视频编解码,禁用后不影响DNN模块和CUDA加速的推理功能

当编译器选择Visual Studio 2022版本时,还需要设置以下配置选项:

选项名称值/操作
CUDA_ARCH_BIN根据显卡架构设置(如RTX 3080属于Ampere架构,对应的CUDA架构是8.6,此项值填8.6)
WITH_NVCUVENC✖️ cudacodec的VideoReader和VideoWriter需安装Nvidia Video Codec SDK,未安装则此项需禁用
WITH_NVCUVID✖️ cudacodec的VideoReader和VideoWriter需安装Nvidia Video Codec SDK,未安装则此项需禁用

3.4 解决第三方库下载问题

若下载卡顿,手动下载以下文件并放入 opencv-4.11.0/.cache 对应目录:

若生成项目文件报错,手动下载以下文件并解压后放入 opencv-4.11.0/build/3rdparty/ade 目录:


4 编译与安装

4.1 生成VS解决方案

点击CMake的Configure和Generate,生成Visual Studio解决方案,如下图所示。
在这里插入图片描述

4.2 使用Visual Studio编译

  1. 打开 build 目录下的 OpenCV.sln
  2. 选择 Release 模式
  3. 选择 CMakeTargets
  4. 右键 ALL_BUILD → 生成(编译时间约30分钟~4小时)
  5. 右键 INSTALL → 生成(将库安装到 build/install 目录)
    CMakeTargets
    完成上述步骤后,即可在opencv-4.11.0/build/install目录中查看编译得到的文件。

5 验证CUDA支持

5.1 检查编译结果

编译完成后,查看 build/install 目录是否包含以下关键文件:

  • include/opencv2(头文件)
  • x64/vc15/bin/opencv_world4110.dll(动态库)
  • x64/vc15/lib/opencv_world4110.lib(静态库)

5.2 测试CUDA加速

  • 编写测试代码,验证CUDA是否启用:
#include <opencv2/opencv.hpp>
#include <opencv2/core/cuda.hpp>
#include <iostream>

int main() {
    std::cout << "CUDA Devices: " << cv::cuda::getCudaEnabledDeviceCount() << std::endl;
    return 0;
}

控制台输出窗口应显示检测到的CUDA设备数量(如 CUDA Devices: 1)。

  • 编写测试代码,检查DNN模块是否支持CUDA后端:
#include <opencv2/core/cuda.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/dnn.hpp>
#include <iostream>

/// <summary>
/// CUDA可用性检查
/// </summary>
/// <returns></returns>
bool isCUDAAvailable()
{
	try {
		// 检查CUDA可用性
		int count = cv::cuda::getCudaEnabledDeviceCount();
		if (count == 0) {
			std::cout << "No CUDA-enabled device available." << std::endl;
			return false;
		}

		// 检查DNN模块是否支持CUDA后端
		cv::dnn::Net net;
		net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);
		net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);

		std::vector<cv::String> outNames;
		outNames = net.getUnconnectedOutLayersNames();
		std::cout << "CUDA is available and DNN module supports CUDA backend." << std::endl;
		return true;
	}
	catch (const cv::Exception& e) {
		std::cerr << "CUDA exception: " << e.what() << std::endl;
		return false;
	}
}

int main()
{
	if (isCUDAAvailable()) {
		std::cout << "CUDA is supported!" << std::endl;
	}
	else {
		std::cout << "CUDA is not supported. Using CPU mode." << std::endl;
	}

	system("pause");
}

控制台输出窗口如下图所示。
CUDA可用性检查结果


常见问题解决

  1. CMake报错找不到CUDA

    • 检查CUDA安装路径是否正确(如 C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7)。
    • 确保环境变量 CUDA_PATH 已自动添加。
  2. 编译时卡在第三方库下载

    • 手动下载文件并放入 .cache 目录。
  3. 显卡计算能力不匹配

    • 查询显卡的计算能力,更新 CUDA_ARCH_BIN 配置项的值。
  4. 编译失败,报错“CMake Error at modules/gapi/cmake/DownloadADE.cmake:23 (add_library):No SOURCES given to target: ade”

    • 根据提示,查看opencv-4.11.0/modules/gapi/cmake 目录下的DownloadADE.cmake文件,如下图所示。
      在这里插入图片描述
    • 从DownloadADE.cmake文件可以看出,需要下载ade至opencv-4.11.0/build/3rdparty/ade目录,压缩包名称为v0.1.2e.zip,解压后子目录名称为ade-0.1.2e,ade压缩包下载地址为https://github.com/opencv/ade/archive/。
    • CMake编译失败原因是该下载地址实际已经失效,新的下载地址为ADE。
    • 因此,可以手动下载该压缩文件,并解压至指定目录。

通过以上步骤,亲测可以成功编译支持CUDA加速的OpenCV,大幅提升深度学习模型(如YOLOv8/YOLO11)的推理速度。


  1. GPU推理YOLO需调用支持CUDA编译的OpenCV,OpenCV 官网提供的发布包均不支持。 ↩︎

  2. CUDA 11.7只支持到VS2019,当CUDA版本为11.7时建议选择VS2019或VS2017版本,或者升级到CUDA 12.4及更高版本,因为这些版本正式支持VS2022。 ↩︎

  3. 当编译器选择VS2022版本时,建议CMake版本不低于3.29,较低版本可能查找不到VS2022编译器。 ↩︎

Win10 OpenCV编译安装CUDA版本 阅读详情

相关推荐

基于TensorRT的yolo11部署【wang-xinyu版本】

tensorRT对于CUDA版本有要求,这个在下载tensorRT时即可查看,而CUDA的编译工具中,对visual studio 版本有要求(C++集成平台v140,140,142,143),所以在使用yolo进行tensorRT部署时,根据CUDA限制torch和visual studio以及tensorRT的版本。解密模块组合更加紧密,需要将文件解密与trt文件初始化到GPU一起,以及包含部分变量的初始化,这些变量会在推理环节用到,所以需要添加到类变量中,方便一个对应对应一组初始化的变量。

Jayson_xia的博客 1141

Opencv+Cuda编译的保姆级别教程

配置Opencv-cuda版本

m0_58326153的博客 7461

【保姆级避坑指南】Windows 10/11 从零部署Darknet YOLO训练环境【2024实测】

本文提供2024年最新Windows 10/11系统下Darknet YOLO训练环境的详细部署指南,涵盖Visual Studio、CUDA、cuDNN和OpenCV的正确安装与配置,避免常见版本冲突问题。通过实测步骤和实用脚本,帮助开发者高效搭建目标检测模型训练环境,特别适合AI初学者和研究人员。

weixin_30301449的博客 390

CUDA版本OpenCV的编译方法

CUDA版本OpenCV的编译方法 VS2013 + OpenCV3.4.0 + CUDA10.1 + CMake 3.15.5 安装CUDA 从英伟达官网下载CUDA安装程序, https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exenetwork 这里选的是10.1版本(官网现在是10.2版本了

pzb19841116的专栏 2443

Opencv 之 DNN 与 CUDA综述

Opencv 之 DNN 与 CUDA综述

yohnyang的博客 2232

目标检测系列算法复现1:Darknet-YOLO-CUDA11-OpenCV4(Ubuntu平台)

你看到的如下模型系列将在后续的本博客文章中连载,欢迎学习,交流技术,分享心得。 目录1、darknet 论文及源码工程复现1.0、 开发环境配置1.1、工程获取与编译1.2、demo测试2、makefil文件解析2.0、GPU(CUDA-CUDNN)2.0.1、CUDNN+CUDA11.1调用2.0.2、GPU算力修改2.0.3、g++ makefile编译需要添加的参数2.0.4、OpenCV4版本号或者安装位置的调用接口修改第一处修改位置 调用opencv4指定的安装依赖及动态库位置目录第二处修改位

源代码杀手的博客 3386

[AI]从零开始的TensorRT加速推理YOLO11教程

讲解了TensorRT的安装,.trt模型的转换以及spacewalk01/yolov11-tensorrt项目的编译与项目集成!

c858845275的博客 5738

目标检测系列算法复现2:Darknet-YOLO-CUDA11-OpenCV4(Ubuntu平台)推理测试

目录1、推理1.1、检测一张图像1.2、摄像头实时检测1.3、视频检测参考 1、推理 1.1、检测一张图像 ./darknet detector test cfg/coco.data cfg/yolov3.cfg weights/yolov3.weights data/dog.jpg 1.2、摄像头实时检测 出现如下情况: backend_plugin.cpp (383) getPluginCandidates Found 0 plugin(s) for UEYE Couldn't connect to.

源代码杀手的博客 2814

YOLO11 OpenCV+CUDA编译保姆级教程

本文将详细介绍在下编译支持的带的。整个过程分为五个步骤。

hllyzms的博客 873

OpenCV 4.11+CUDA 12.1+DNN+cuDNN编译实战

GPU加速已成为深度学习推理与实时视觉应用的核心需求。OpenCV作为业界应用最广的计算机视觉库,其DNN模块在CPU模式下面临明显性能瓶颈,而官方预编译包默认关闭CUDA与cuDNN支持,导致显卡算力被浪费。通过源码编译,将OpenCV 4.11、CUDA 12.1与cuDNN 8.9.7深度整合,可实现DNN模型推理速度近10倍的提升,满足目标检测、视频流分析和实时视觉处理等场景要求。本文以Windows 11+VS2022环境为基础,系统讲解Release x64版本OpenCV的完整编译流程,涵盖版

weixin_42723849的博客 312

VS2019+OpenCV4.5.5+CUDA11.1 Windows编译实战指南

OpenCV CUDA模块启用失败,本质是编译工具链(MSVC/CUDA/Python)的ABI兼容性与构建配置协同问题。其核心原理在于CMake对CUDA_TOOLKIT_ROOT_DIR、CUDA_ARCH_BIN等变量的硬编码探测逻辑,以及VS2019运行时库(/MD)与CUDA动态链接库的符号一致性要求。该技术方案具备明确的工程价值:实现cv2.cuda接口真实可用、支持工业级图像预处理加速,并与PyTorch等框架共存。典型应用场景包括高分辨率实时去噪、多ROI模板匹配及视频流色彩空间转换。本文聚

weixin_30096975的博客 271

OpenCV + CUDA + cuDNN模块编译

在追求高端性能与资源优化并重的应用场景中,如边缘计算设备或资源受限的开发板上运行YOLO等复杂深度学习模型,采用C++结合OpenCV与GPU加速技术相较于传统的Python环境展现出显著优势。这种策略不仅极大地提升了执行效率,还显著降低了运行时资源消耗,是实现实时物体检测与识别的理想选择。C++运行YOLO,安装环境稍微复杂些,不像Python一键安装pip包。本案例使用了GPU加速算法运行,所以编译OpenCV的时候需要开启CUDA和DNN模块。

不会代码的小林 2756

从零到一:Halcon手眼标定的实战避坑指南

本文详细解析了Halcon手眼标定的完整流程,重点介绍了Eye-in-Hand和Eye-to-Hand两种模式的实操技巧与常见陷阱。通过九点法、N点法等实战案例,提供硬件配置检查、数据采集策略及误差修正方案,帮助开发者提升机械臂与视觉系统的协同精度,适用于工业自动化领域的精准定位与抓取任务。

neovim7hacker的博客 234

YOLO11保姆级安装与快速上手教程:从GitHub克隆到第一个检测结果

本文提供YOLO11的保姆级安装与快速上手教程,涵盖从GitHub克隆到第一个检测结果的完整流程。通过详细的步骤指导,帮助开发者快速掌握目标检测技术,包括环境配置、模型安装、常见问题解决及性能优化技巧,适合计算机视觉新手快速入门。

weixin_29047919的博客 260

LangChain学习及应用(超详细)

Model I/O 部分是与语言模型进行交互的核心组件,包括输入提示(Prompt Template)、调用模型(Model)、输出解析(Output Parser)。简单来说,就是输入、处理、输出这三个步骤。LLM 因其具有海量参数,需要花费相当的物力与时间成本进行预训练和微调,同时商用 LLM 还需要进行各种安全测试与风险评估等。因此 LLM 会存在知识滞后的问题。在专有领域,LLM 无法学习到所有的专业知识细节,因此在面向专业领域知识的提问时,无法给出可靠准确的回答。

weixin_39764056的博客 4257

VMware Workstation Pro必备技巧:5分钟搞定Ubuntu虚拟机磁盘瘦身(附常见错误解决)

本文详细介绍了如何为VMware Workstation Pro中的Ubuntu虚拟机进行磁盘瘦身,解决.vmdk文件只增不减的问题。通过清理系统垃圾、使用零填充空闲空间,并利用vmware-toolbox-cmd或vmware-vdiskmanager工具进行压缩,可有效回收被无效占用的磁盘空间。文章还提供了常见错误解决方案和预防性维护建议,帮助用户高效管理虚拟机存储。

sea99的博客 297

Visual Studio 编译带显卡加速的 OpenCV

这篇教程重点介绍如何编译支持GPU加速的OpenCV库。

Darker的博客 2282

Tina Linux WiFi驱动移植避坑指南:以RTL8733bs为例,详解设备树、Kconfig与固件依赖

本文详细解析了在Tina Linux上移植RTL8733bs WiFi驱动的关键步骤与常见问题,涵盖设备树配置、内核依赖、固件加载及启动时序等核心环节。通过实战案例和排查清单,帮助开发者规避SDIO控制器配置、电源管理、GPIO极性等典型陷阱,确保驱动稳定运行。

weixin_29164185的博客 263

YOLO11+OpenCV集成:预装环境免去兼容烦恼

本文介绍了基于星图GPU平台,如何通过预装环境的YOLO11镜像实现OpenCV与YOLO11的无缝集成。该平台支持YOLO11镜像的自动化部署,有效解决版本兼容问题,适用于实时目标检测、视频流分析等AI视觉应用,助力开发者快速完成模型调试与演示交付。

CitrineLion90的博客 675

matlab SAR图像的多视滤波

单视复数数据(Single Look Comple)是原始的最高分辨率数据,但是从单个像元散射的雷达回波信号的相干叠加,导致强度信息有很多噪声。SAR的多视处理是对SLC数据方位向和/或距离向做平均,得到的结果是多视后的强度数据。多视处理可以提高SAR图像的信噪比,有效抑制斑点噪声,但是会降低方位分辨率。

点云侠的博客 534

手把手教您如何群晖/飞牛NAS等服务器上一键部署洛雪音乐同步服务,手机电脑无缝同步歌单,支持外网访问

🎵 手机电脑歌单不同步?用Docker在群晖/飞牛NAS等服务器上搭个同步服务器, 3分钟搞定 !支持docker-compose一键部署,手机、电脑、平板收藏夹实时同步,外出也能用域名远程访问 ~ ✨

XiaoqiangClub的博客 4606

YOLO11保姆级教程:从安装到摄像头推理全流程

本文介绍了如何在星图GPU平台上自动化部署YOLO11镜像,快速实现摄像头实时目标检测。该镜像预置Ultralytics框架与CUDA环境,开箱即用,典型应用于智能安防监控、工业巡检及实时人流/车流识别等场景,大幅降低AI视觉应用落地门槛。

weixin_34620658的博客 402

Universal Robot——在Gazebo中模拟UR5机器人

今天的目标是在Gazebo安装我们的ur5机器人。Gazebo是一个流行的模拟工具,它不仅可以让你像在Rviz中一样可视化你的机器人,而且还内置了一个物理引擎。这样你就可以在更真实的环境中测试你的机器人应用程序。我们将查看我们需要的属性 添加对我们的机器人——我们的order的描述,以模拟它以及如何在Gazebo中生成我们的机器人。

如果想成为中心,那么就到中心去吧。 1969

opencv使用cuda加速

完整代码示例及故障排查参考:https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html 或 https://developer.nvidia.com/cuda-downloads。替代方案:若仅需基础CUDA功能,可尝试社区预编译包(如opencv-python-headless + CUDA补丁),但稳定性较低。CUDA_ARCH_BIN:需匹配显卡架构(查询https://developer.nvidia.com/cuda-gpus)。

qq_54844497的博客 1347

15、虚拟环境中的数据保护与恢复方案解析

本文深入解析了虚拟环境中两种重要的数据保护与恢复解决方案:RecoverPoint for Virtual Machines(RP4VM)在VxRail上的设计,以及Veeam Backup & Replication(VBR)与VxRail的集成方案。文章详细介绍了RP4VM的网络布局、故障转移场景及其相关问题,以及VBR的架构设计、备份与复制流程、许可证选项及其多平台支持特性。此外,还探讨了RP4VM与VBR结合使用的综合解决方案,以及未来数据保护领域的发展趋势,如智能化管理、云原生集成和零信任架构,为

t4y5u6i7o的博客 96

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

YOLO11实时检测实战:RTSP视频流处理教程

本文介绍了如何在星图GPU平台上自动化部署YOLO11镜像,实现RTSP视频流的实时目标检测。通过预置CUDA、PyTorch与Ultralytics环境,用户可快速接入海康、大华等IPC摄像头,应用于智能安防、交通监控与工业巡检等典型场景,显著降低视觉AI工程化门槛。

weixin_30205153的博客 494

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: 【庖丁解牛】机器视觉核心算法之圆环展开
下一篇: 【计算成像】超越像素:计算光学与下一代工业视觉系统
AI Researcher
博客等级 码龄7年 310粉丝 7原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值