在网上找了很多,要么很复杂,要么报错,研究了很久,发现一个简单的方法。文章后附源码,大家一起学习。
1.第一步,vs创建项目
2.引入yolov8的包
3.在winform中创建一个按钮和一个图片控件。如果页面里没有工具箱,可以点击快捷键ctrl+Alt+x,工具箱就会出现。
4.创建一个文件夹用来存放要预测的图片,还要准备onnx文件,如果你是用yolov8自带的onnx模型,可以自己网上去下yolov8的onnx模型,或者用我分享的。
D:\vs2022\work-space\yolov8_onnx\yolov8_onnx\bin\Debug\net8.0-windows找到路径,在 net8.0-windows下创建一个文件夹为images,放入要预测的图片。这是我的路径,要根据自己项目的路径修改一下。
然后将onnx文件复制在项目中,我这是自己训练出来的模型。如果要用yolov8自己的onnx模型,需要替换一下,我放在提供的链接里面。
5.写代码
双击button1按钮,进入click事件
先创建一个异步调用的方法代码如下
async Task PredictAndSaveAsync(YoloV8Predictor predictor, string image)
{
var path = $"./images/{image}";
var output = "pp.bmp";
var result = await predictor.PredictAndSaveAsync(path,output);
//MessageBox.Show($"Result: {result}");
pictureBox1.Image = Image.FromFile(output);
Console.WriteLine();
Console.WriteLine($"Task: {predictor.Metadata.Task}");
Console.WriteLine($"Image: {image}");
Console.WriteLine($"Result: {result}");
Console.WriteLine($"Speed: {result.Speed}");
}
然后在完成click事件。
代码如下
private async void button1_Click(object sender, EventArgs e)
{
Console.WriteLine("Loading classification model...");
using var ppjjPredictor = YoloV8Predictor.Create("D:\\vs2022\\work-space\\WinFormsApp1\\WinFormsApp1\\best.onnx");
await PredictAndSaveAsync(ppjjPredictor, "jj.bmp");
}
运行,启动成功后点击botton1,
结果:有点小,我的模型就是字符识别。预测出来结果就是5912
1.如果用这个源码,onnx路径记得换成自己的。
2.如果用yolov8提供的onnx模型,就把预测图片也换一下,因为yolov8提供的那个onnx模型,预测不了字符识别,我在文件中准备了另外一张图片,你们可以替换一下
链接:https://pan.baidu.com/s/1KSt-yYR56pJ3exAtS_NAww
提取码:1999