1. 簡介 機緣巧合下寫的一個工程,本來是作為商家視覺識別上位機的替代品,但是最後沒用上,因此只開發了一半(廠家升級了攝像頭和軟體) 該工程基於WPF的.net6+mvvm 調用攝像頭進行識別 opencv開攝像頭(不想自己封裝win32api),yolov5對圖像進行檢測 2.引用庫 MVVM C ...
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的思路,如有錯誤煩請指出。
界面展示: