代码参考:yolov5使用opnecv进行c++推理部署_yolov5 c++-优快云博客
这位大佬的代码。在qt中封装成模块,只要安装了opencv就可以直接使用。
附我自己整理编写的海康威视sdk模块化包(pri):
【c++(qt+vs编译器)海康威视摄像头SDK包的整合。pri模块,通过类继承 - 优快云 App】
权重我里面放了一个,还放了一个测试用的图片。得到坐标后,请直接自己在图片上化框。
1、导入模块|在.pro中加入include(YoloV/yolov5.pri),然后更改pri中的opencv包的参数。
2、在需要的地方导入模块 #include"YoloV/yolov5.h"
3、在全局中建立结构体 Configuration config= {
0.25,0.25,0.25,
"D:/Porject/SDK_Yolo_Test/YoloV/Wights/qiege_new.onnx",
{"meterfour","meterfive","metereight","meternine","meterseven","metersix","meterone"}
}
它们分别是 置信度*分类分数后的阈值 ,iou阈值,置信度阈值。可以根据python的参数来进行修改。接下来是权重的位置,和权重中的类。包里面自带了一个我
权重地址,要写绝对地址
类,要完全与.yaml文件中的类对应,顺序不能乱。
4、全局中建立 YoloV5 yolo类名随便写(config,true);这里true表示开启cudnn加速。
5、在需要的地方 写下 yolo.detect(BGR);这里BGR是cv::Mat,类型BGR类型。
6、yolo.Label,yolo.NameID分别是这张图对应的坐标和坐标对应的类名,按顺序排好的。
类型:
std::vector<int> NameID;
std::vector<cv::Rect> Label;
调用:
类名:NameID[第几个索引]
对应了当前类的x,y坐标和宽高:Label[第几个索引].x,Label[第几个索引].y,Label[第几个索引].width,Label[第几个索引].height