.net6下[WPF+yolov5+opencvsharp]

打印 上一主题 下一主题

主题 530|帖子 530|积分 1590

1. 简介
机缘巧合下写的一个工程,本来是作为商家视觉识别上位机的替代品,但是最后没用上,因此只开发了一半(厂家升级了摄像头和软件)
该工程基于WPF的.net6+mvvm 调用摄像头进行识别
opencv开摄像头(不想自己封装win32api),yolov5对图像进行检测
2.引用库

MVVM
CommunityToolkit.Mvvm
Opencv
OpenCvSharp4  OpenCvSharp4.Windows  OpenCvSharp4.WpfExtensions(wpf专供:BitmapSourceConverter)
Yolov5
SixLabors.ImageSharp(检测图片用)
Microsoft.ML.OnnxRuntime(yolov5环境库)(CPU版本)
yolov5分CPU、GPU、DirectML三个版本(DirectML没用过)
CPU版本和GPU版本不能一起装.
参考博客https://www.cnblogs.com/kita/p/17511357.html)
3.如何部署yolov5模型
首先,去Github官网拉取一个yolov5的模板工程,我们只需要更改引用模型参数即可

Github官网模板网址https://github.com/techwingslab/yolov5-net)
如何修改参数:
①修改裁剪的图像宽高:图中的640
②修改output的输出名称:图中的字符串"output"
③修改标签名:图中的person,bicycle等为标签名(标号与模型中标号一致 如果你的为0,那就从0开始)
④修改标签个数:图中的85(示例程序实际标签个数为80,标签个数=实际标签个数+5)
如何查看onnx模型参数:
(https://netron.app/)
根据可视化面板来查看自己的参数
其次,修改完参数后重新编译生成dll文件,将dll文件导入工程中,随后将你的模型文件导入工程(.onnx文件)
踩坑点:千万别用nuget上的Yolov5Net包,会覆盖你的dll文件,运行模型不匹配后程序直接崩
4.代码
代码中加载模型

在MainViewModel中调用RegisterYoloModel函数即可
代码中识别

PlayCamera为视频检测函数
首先通过Opencv读取画面内容然后转成流的形式,然后再将流转换成yolov5所需要的图片进行检测,
最后检测出再用Opencv画框,再将所得的Mat通过BitmapSourceConverter类转换为Image控件所需要的
5.结尾
该工程为半成品,LAB值过滤,Tcp、串口发送数据均还没有完全写完。
本文主要希望能给各位提供一点wpf中调用yolov5的思路,如有错误烦请指出。
界面展示:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表