已解决
C# OpenCvSharp Yolov8 Cls 图像分类
来自网友在路上 173873提问 提问时间:2023-09-29 12:50:47阅读次数: 73
最佳答案 问答题库738位专家为你答疑解惑
效果
项目
代码
using OpenCvSharp;
using OpenCvSharp.Dnn;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace OpenCvSharp_Yolov8_Demo
{public partial class Form1 : Form{public Form1(){InitializeComponent();}string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";string image_path = "";string startupPath;string classer_path;DateTime dt1 = DateTime.Now;DateTime dt2 = DateTime.Now;string model_path;Mat image;ClasResult result_pro;Mat result_mat;Mat result_image;Mat result_mat_to_float;Net opencv_net;Mat BN_image;float[] result_array;int max_image_length;Mat max_image;Rect roi;KeyValuePair<string, float> result_cls;StringBuilder sb = new StringBuilder();private void Form1_Load(object sender, EventArgs e){startupPath = System.Windows.Forms.Application.StartupPath;model_path = startupPath + "\\yolov8n-cls.onnx";classer_path = startupPath + "\\yolov8-cls-lable.txt";result_pro = new ClasResult(classer_path);//初始化网络类,读取本地模型opencv_net = CvDnn.ReadNetFromOnnx(model_path);result_array = new float[1000];}private void button1_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = fileFilter;if (ofd.ShowDialog() != DialogResult.OK) return;pictureBox1.Image = null;image_path = ofd.FileName;pictureBox1.Image = new Bitmap(image_path);textBox1.Text = "";image = new Mat(image_path);pictureBox2.Image = null;}private void button2_Click(object sender, EventArgs e){if (image_path == ""){return;}//缩放图片max_image_length = image.Cols > image.Rows ? image.Cols : image.Rows;max_image = Mat.Zeros(new OpenCvSharp.Size(max_image_length, max_image_length), MatType.CV_8UC3);roi = new Rect(0, 0, image.Cols, image.Rows);image.CopyTo(new Mat(max_image, roi));//数据归一化处理BN_image = CvDnn.BlobFromImage(max_image, 1 / 255.0, new OpenCvSharp.Size(640, 640), new Scalar(0, 0, 0), true, false);//配置图片输入数据opencv_net.SetInput(BN_image);dt1 = DateTime.Now;//模型推理,读取推理结果result_mat = opencv_net.Forward();dt2 = DateTime.Now;//将推理结果转为float数据类型result_mat_to_float = new Mat(1, 1000, MatType.CV_32F, result_mat.Data);//将数据读取到数组中result_mat_to_float.GetArray<float>(out result_array);result_cls = result_pro.process_result(result_array);result_image = result_pro.draw_result(result_cls, image.Clone());if (!result_image.Empty()){pictureBox2.Image = new Bitmap(result_image.ToMemoryStream());sb.Clear();sb.AppendLine("推理耗时:" + (dt2 - dt1).TotalMilliseconds + "ms");sb.AppendLine("------------------------------");sb.AppendLine(string.Format("{0}:{1}", result_cls.Key, result_cls.Value.ToString("0.00")));textBox1.Text = sb.ToString();}else{textBox1.Text = "无信息";}}}
}
Demo下载
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"C# OpenCvSharp Yolov8 Cls 图像分类":http://eshow365.cn/6-15417-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!