[C++][cmake]使用C++部署yolov12目标检测的tensorrt模型支持图片视频推理windows测试通过
最近悄悄出了yolov12框架,标志着目标检测又多了一个检测利器,于是尝试在windows下部署yolov12的tensorrt模型,并最终成功。
重要说明:安装环境视为最基础操作,博文不做环境具体步骤,可以百度查询对应安装步骤即可。
测试通过环境:
vs2019
windows 10 RTX2070 8G显存
cmake==3.30.1
cuda11.8.0+cudnn8.9.7
Tensorrt==8.6.1.6
opencv==4.9.0
anaconda3+python3.10
torch==2.5.1+cu124
部署过程:
部署最费时间是安装环境。首先确保自己电脑是win10或者win11并确保电脑有一块nvidia显卡。查看自己显卡就是打开任务管理器(win10是ctrl+alt+delete,win11是ctrl+shift+ESC),在性能里面查看,如下图

如果看到GPU0和GPU1等等表示有显卡,但是需要看到NVIDIA字样才能表示有独立显卡。其他是AMD显卡或者核心显卡,这些都是不能用于cuda的,也就是电脑不支持tensorrt加速和cuda使用的。
首先需要大家安装好VS2019或者VS2022,还有如下环境,由于安装包很多需要去官方搜索下载,需要自己安装,其中版本可以有区别,但是如果快速复现这个项目,最好安装位一致版本这样更快复现出项目。
cmake==3.30.1
cuda11.8.0+cudnn8.9.7
Tensorrt==8.6.1.6
opencv==4.9.0
anaconda3+python3.10
torch==2.5.1+cu124
假设大家安装好上面的环境。下面具体怎么部署,首先去yolov12官方仓库下载yolo12模型,这样下载yolov12n.pt
然后将pt模型放进项目里面,切换自己安装好的yolov12环境里面并切换到项目目录,使用下面命令直接转换
yolo export model=yolov12n.pt format=onnx dynamic=False opset=12
得到onnx模型以后我们开始编译源码。
首先我们修改CMakeLists.txt文件,将源码里面opencv路径和tensorrt路径修改成自己路径
# Find and include OpenCV
set(OpenCV_DIR "D:\\lufiles\\opencv490\\build\\x64\\vc16\\lib")
# Set TensorRT path if not set in environment variables
set(TENSORRT_DIR "D:\\lufiles\\TensorRT-8.6.1.6")
然后执行
mkdir build
cd build
cmake ..
之后去build文件夹找到sln文件用vs打开它,然后选择x64 release,并选中ALL_BUILD右键单击选择生成

之后build\Release文件夹下面有个yolov12-tensorrt.exe生成。之后我们开始转换onnx模型到tensorrt模型,执行命令
trtexec --onnx=yolov12n.onnx --saveEngine=yolov12n.engine --fp16
稍等20多分钟后会自动生成yolov12n.engine文件.
下面我们开始测试图片
yolov12-tensorrt.exe yolov12n.engine "test.jpg"
然后测试视频
yolov12-tensorrt.exe yolov12n.engine "car.mp4"
特别注意:
- tensorrt模型依赖于硬件,所以不是通用的需要在电脑重新转换,否则可能无法使用;
- 如需要二次开发,需要读懂调用代码,需要有一定c++基础才行,否则无法进行二次开发。
相关文章:
[C++][cmake]使用C++部署yolov12目标检测的tensorrt模型支持图片视频推理windows测试通过
最近悄悄出了yolov12框架,标志着目标检测又多了一个检测利器,于是尝试在windows下部署yolov12的tensorrt模型,并最终成功。 重要说明:安装环境视为最基础操作,博文不做环境具体步骤,可以百度查询对应安装步…...
Uppy - 免费开源、功能强大的新一代 web 文件上传组件,支持集成到 Vue 项目
Uppy 这个优质的前端组件,可以解决几乎所有的文件上传问题,最近发布了 TS 重写的 4.0 新版本,实用性更强了。 Uppy 是一个 UI 外观时尚、模块化的 JavaScript 文件上传组件,这个组件可以与任何 web 技术栈集成,不仅轻…...
【游戏——BFS+分层图】
题目 分析 但凡是最优方案可能需要访问同一个点的情况,都需要应用“拆点”,或者说分层图的技巧。多出来的维度主要是区分同一个点的不同状态而用。 对于本题,访问的时机便是一个区分点。 对于类似题“AB路线”,同一个K段的位置是…...
SSL 证书是 SSL 协议实现安全通信的必要组成部分
SSL证书和SSL/TLS协议有着密切的关系,但它们本质上是不同的概念。下面是两者的区别和它们之间的关系的表格: 属性SSL/TLS 协议SSL证书英文全称SSL(Secure Sockets Layer),TLS(Transport Layer Security&am…...
Spring 源码硬核解析系列专题(七):Spring Boot 与 Spring Cloud 的微服务源码解析
在前几期中,我们从 Spring 核心的 IoC、AOP、事务管理,到 Spring Boot 的自动装配,逐步揭示了 Spring 生态的底层原理。随着微服务架构的流行,Spring Boot 结合 Spring Cloud 成为了构建分布式系统的主流选择。本篇将深入 Spring Cloud 的核心组件,以服务注册与发现(Eure…...
嵌入式开发:傅里叶变换(5):STM32和Matlab联调验证FFT
目录 1. MATLAB获取 STM32 的原始数据 2. 将数据上传到电脑 3. MATLAB 接收数据并验证 STM32进行傅里叶代码 结果分析 STM32 和 MATLAB 联调是嵌入式开发中常见的工作流程,通常目的是将 STM32 采集的数据或控制信号传输到 MATLAB 中进行实时处理、分析和可视化…...
C# 根据Ollama+DeepSeekR1开发本地AI辅助办公助手
在上一篇《访问DeepSeekR1本地部署API服务搭建自己的AI办公助手》中,我们通过通过Ollama提供的本地API接口用Python实现了一个简易的AI办公助手,但是需要运行Py脚本,还比较麻烦,下面我们用C#依据Ollama提供的API接口开发一个本地A…...
洛谷 P8705:[蓝桥杯 2020 省 B1] 填空题之“试题 E :矩阵” ← 卡特兰数
【题目来源】 https://www.luogu.com.cn/problem/P8705 【题目描述】 把 1∼2020 放在 21010 的矩阵里。要求同一行中右边的比左边大,同一列中下边的比上边的大。一共有多少种方案? 答案很大,你只需要给出方案数除以 2020 的余数即可。 【答案提交】 …...
我的AI工具箱Tauri版-FluxCharacterGeneration参考图像生成人像手办(Flux 版)
本教程基于自研的AI工具箱Tauri版进行ComfyUI工作流FluxCharacterGeneration参考图像生成人像手办(Flux 版)。 我的AI工具箱Tauri版 - FluxCharacterGeneration参考图像生成人像手办(Flux版) 基于先进的FLUX模型,通过…...
DeepSeek开源周Day2:DeepEP - 专为 MoE 模型设计的超高效 GPU 通信库
项目地址:https://github.com/deepseek-ai/DeepEP 开源日历:2025-02-24起 每日9AM(北京时间)更新,持续五天 (2/5)! 引言 在大模型训练中,混合专家模型(Mixture-of-Experts, MoE)因其动…...
51单片机-串口通信编程
串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制盒中断控制。具体步骤如下: 确定T1的工作方式(编程TMOD寄存器)计算T1的初值,装载TH1\TL1启动T1(编程TCON中的TR1位…...
python实现基于文心一言大模型的sql小工具
一、准备工作 注册与登录: 登录百度智能云千帆控制台,注册并登录您的账号。 创建千帆应用: 根据实际需求创建千帆应用。创建成功后,获取AppID、API Key、Secret Key等信息。如果已有千帆应用,可以直接查看已有应用的AP…...
deepseek 导出导入模型(docker)
前言 实现导出导入deepseek 模型。deepseek 安装docker下参考 docker 导出模型 实际生产环境建议使用docker-compose.yml进行布局,然后持久化ollama模型数据到本地参考 echo "start ollama" docker start ollama#压缩容器内文件夹,然后拷贝…...
前言:什么是大模型微调
一、大模型微调的基础知识 1. 什么是大模型微调? 大模型微调(Fine-tuning)是指在预训练模型的基础上,针对特定的任务或数据集进行进一步训练的过程。预训练模型通常在大规模的通用数据上训练,具备广泛的语言理解和生…...
TCPDF 任意文件读取漏洞:隐藏在 PDF 生成背后的危险
在网络安全的世界里,漏洞就像隐藏在黑暗中的“定时炸弹”,稍有不慎就会引发灾难性的后果。今天,我们要聊的是一个与 PDF 生成相关的漏洞——TCPDF 任意文件读取漏洞。这个漏洞可能让攻击者轻松读取服务器上的敏感文件,甚至获取整个…...
unity学习53:UI的子容器:面板panel
目录 1 UI的最底层容器:canvas 1.1 UI的最底层容器:canvas 1.2 UI的合理结构 2 UI的子容器:面板panel 2.1 创建panel 2.2 面板的本质: image ,就是一个透明的图片,1个空容器 3 面板的属性 4 面板的…...
水环境水质在线监测系统解决方案
在当今社会,水资源作为人类生存和发展的基础性资源,其质量的优劣直接关系到生态平衡、人类健康以及社会经济的可持续发展。然而,随着工业化、城市化的快速推进,各类污染物不断排入水体,导致水环境面临严峻挑战。水环境…...
HBuilder X中,uni-app、js的延时操作及定时器
完整源码下载 https://download.csdn.net/download/luckyext/90430165 在HBuilder X中,uni-app、js的延时操作及定时器可以用setTimeout和setInterval这两个函数来实现。 1.setTimeout函数用于在指定的毫秒数后执行一次函数。 例如, 2秒后弹出一个提…...
BigDecimal线上异常解决方案:避免科学计数法输出的坑
文章目录 问题背景为什么BigDecimal会输出科学计数法?线上异常场景场景1:数据传递异常场景2:日志记录异常场景3:数据存储异常 解决方案1. 使用toPlainString()方法2. 设置格式化输出3. 自定义工具类 代码示例总结 在Java开发中&am…...
【C语言】指针笔试题
前言:上期我们介绍了sizeof与strlen的辨析以及sizeof,strlen相关的一些笔试题,这期我们主要来讲指针运算相关的一些笔试题,以此来巩固我们之前所学的指针运算! 文章目录 一,指针笔试题1,题目一…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
