前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET 6+WPF+MVVM调用摄像头进行识别

.NET 6+WPF+MVVM调用摄像头进行识别

作者头像
郑子铭
发布2023-10-30 11:09:33
2270
发布2023-10-30 11:09:33
举报

一、简介

机缘巧合下写的一个工程,本来是作为商家视觉识别上位机的替代品,但是最后没用上,因此只开发了一半(厂家升级了摄像头和软件)

该工程基于 WPF 的.NET 6 + MVVM 调用摄像头进行识别 opencv开摄像头(不想自己封装win32api),yolov5对图像进行检测。

二、引用库

1、MVVM

CommunityToolkit.Mvvm

2、Opencv

OpenCvSharp4 OpenCvSharp4.Windows

OpenCvSharp4.WpfExtensions(wpf专供:BitmapSourceConverter)

3、Yolov5

SixLabors.ImageSharp(检测图片用)

Microsoft.ML.OnnxRuntime(yolov5环境库)(CPU版本)

yolov5分CPU、GPU、DirectML三个版本(DirectML没用过)

CPU版本和GPU版本不能一起装。

参考博客:(https://www.cnblogs.com/kita/p/17511357.html)

三、如何部署yolov5模型

首先,去Github官网拉取一个yolov5的模板工程,我们只需要更改引用模型参数即可

Github官网模板网址:(https://github.com/techwingslab/yolov5-net)

如何修改参数:

1、修改裁剪的图像宽高:图中的640

2、修改output的输出名称:图中的字符串"output"

3、修改标签名:图中的person,bicycle等为标签名(标号与模型中标号一致 如果你的为0,那就从0开始)

4、修改标签个数:图中的85(示例程序实际标签个数为80,标签个数=实际标签个数+5)

如何查看onnx模型参数:https://netron.app/

根据可视化面板来查看自己的参数

其次,修改完参数后重新编译生成dll文件,将dll文件导入工程中,随后将你的模型文件导入工程(.onnx文件)

踩坑点:千万别用nuget上的Yolov5Net包,会覆盖你的dll文件,运行模型不匹配后程序直接崩

四、代码

代码中加载模型

在MainViewModel中调用RegisterYoloModel函数即可

代码中识别

PlayCamera为视频检测函数

首先通过Opencv读取画面内容然后转成流的形式,然后再将流转换成yolov5所需要的图片进行检测,

最后检测出再用Opencv画框,再将所得的Mat通过BitmapSourceConverter类转换为Image控件所需要的

五、结尾

该工程为半成品,LAB值过滤,Tcp、串口发送数据均还没有完全写完。

本文主要希望能给各位提供一点wpf中调用yolov5的思路,如有错误烦请指出。

界面展示

推荐阅读:

推荐一个基于 .NET 开发的开源工作流项目

推荐一个使用 .NET 和 Angular 开发的在线任务管理工具

基于.NET的强大文件格式开源转换工具

字符串 --- 不可变性与驻留池

Dotnet工具箱:开源、免费的纯前端工具网站,带你探索10大工具分类和73个实时在线小工具

.NET高性能开发-位图索引

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档