文章介绍
本文是篇基于yolov5模型的一个工程,主要是利用c++将yolov5模型进行调用并测试,从而实现目标检测任务 任务过程中主要重点有两个,第一 版本问题,第二配置问题
一,所需软件及版本
训练部分 pytorch==1.13.0 opencv==3.4.1 其他的直接pip即可
c++部署
vs2019或者vs2022
libtorch-1.13.0
opencv==3.4.1 链接:https://pan.baidu.com/s/1XPWUNfS7PTFiDkHTG8yvcQ
提取码:d9g4
有的可能需要cmake反正我没用 链接:https://pan.baidu.com/s/1-eLo7ecgQg94Mjtw-pQcXw
提取码:rg0x
二,安装vs
官网地址:
Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本
上诉链接可能为2017推荐安装 Visual Studio Installer 2019或者2022
环境配置以及任务准备可以借鉴我上一篇文章
libtorch-yolov5部署pytorch版本_该醒醒了~的博客-CSDN博客
好的屁话不多说,正文开始
首先在vs中创建新文件
在源文件中新建一个cpp文件,在头文件新建一个.h 头文件
下载yolov5 libtorch
文件链接:https://pan.baidu.com/s/1oIP1btJd10gQddxAHijg7w
提取码:lntf
- 粘贴 src/YoloV5.cpp 中的代码到上面的 YoloV5.cpp 文件中
- 粘贴 nclude/YoloV5.h 中的代码到上面的 YoloV5.h 文件中
- 更改 YoloV5.cpp 中头文件引入方式为 "YoloV5.h
"
改为
在源文件里新建一个main.cpp 文件 此文件是用来调用yolov5的
将代码复制到main.cpp中
这是读取摄像头实时监测的
#include "YoloV5.h" int main() { // 第二个参数为是否启用 cuda 详细用法可以参考 YoloV5.h 文件 YoloV5 yolo("C:/Users/hwx/Documents/Github/YoloV5-LibTorch/test/yolov5s.cuda.pt", true); // 读取分类标签(我们用的官方的所以这里是 coco 中的分类) // 其实这些代码无所谓哪 只是后面预测出来的框没有标签罢了 std::ifstream f("C:/Users/hwx/Documents/Github/YoloV5-LibTorch/test/coco.txt"); std::string name = ""; int i = 0; std::map labels; while (std::getline(f, name)) { labels.insert(std::pair(i, name)); i++; } // 用 OpenCV 打开摄像头读取文件(你随便咋样获取图片都OK哪) cv::VideoCapture cap = cv::VideoCapture(0); // 设置宽高 无所谓多宽多高后面都会通过一个算法转换为固定宽高的 // 固定宽高值应该是你通过YoloV5训练得到的模型所需要的 // 传入方式是构造 YoloV5 对象时传入 width 默认值为 640,height 默认值为 640 cap.set(cv::CAP_PROP_FRAME_WIDTH, 1000); cap.set(cv::CAP_PROP_FRAME_HEIGHT, 800); cv::Mat frame; while (cap.isOpened()) { // 读取一帧 cap.read(frame); if (frame.empty()) { std::cout h = h; } int ImageResizeData::getH() { return h; } void ImageResizeData::setBorder(int border) { this->border = border; } int ImageResizeData::getBorder() { return border; }
这个效果是读取摄像图进行试试检测博文中有将摄像头替换为图片进行检测的案例
看得懂就看,看不懂的评论区问我