C# Onnx PP-Vehicle 车辆分析(包含:车辆检测,识别车型和车辆颜色)效果
  yqdtHKhvd9Ja 2023年12月15日 37 0


目录

效果

模型信息

mot_ppyoloe_s_36e_ppvehicle.onnx 

vehicle_attribute_model.onnx

项目

代码

下载

其他


C# Onnx PP-Vehicle 车辆分析(包含:车辆检测,识别车型和车辆颜色)

效果

C# Onnx PP-Vehicle 车辆分析(包含:车辆检测,识别车型和车辆颜色)效果_计算机视觉

模型信息

mot_ppyoloe_s_36e_ppvehicle.onnx 

Inputs
-------------------------
name:image
tensor:Float[-1, 3, 640, 640]
name:scale_factor
tensor:Float[-1, 2]
---------------------------------------------------------------

Outputs
-------------------------
name:multiclass_nms3_0.tmp_0
tensor:Float[-1, 6]
name:multiclass_nms3_0.tmp_2
tensor:Int32[1]
---------------------------------------------------------------

vehicle_attribute_model.onnx

Inputs
-------------------------
name:x
tensor:Float[-1, 3, 192, 256]
---------------------------------------------------------------

Outputs
-------------------------
name:sigmoid_2.tmp_0
tensor:Float[-1, 19]
---------------------------------------------------------------

项目

VS2022

.net framework 4.8

OpenCvSharp 4.8

Microsoft.ML.OnnxRuntime 1.16.2

C# Onnx PP-Vehicle 车辆分析(包含:车辆检测,识别车型和车辆颜色)效果_c#_02

代码

using OpenCvSharp;
 using System;
 using System.Collections.Generic;
 using System.Windows.Forms;
 using System.Drawing;
 using System.Text;namespace Onnx_Demo
 {
     public partial class frmMain : Form
     {
         public frmMain()
         {
             InitializeComponent();
         }        string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
         string image_path = "";        DateTime dt1 = DateTime.Now;
         DateTime dt2 = DateTime.Now;        Mat image;
        PP_YOLOE pp_yoloe;
         VehicleAttr vehicleAttr;        StringBuilder sb = new StringBuilder();
        private void button1_Click(object sender, EventArgs e)
         {
             OpenFileDialog ofd = new OpenFileDialog();
             ofd.Filter = fileFilter;
             if (ofd.ShowDialog() != DialogResult.OK) return;            pictureBox1.Image = null;
             pictureBox2.Image = null;
             textBox1.Text = "";            image_path = ofd.FileName;
             pictureBox1.Image = new System.Drawing.Bitmap(image_path);
             image = new Mat(image_path);
         }        private void Form1_Load(object sender, EventArgs e)
         {
             pp_yoloe = new PP_YOLOE("model/mot_ppyoloe_s_36e_ppvehicle.onnx", 0.6f);            vehicleAttr = new VehicleAttr("model/vehicle_attribute_model.onnx");
            image_path = "test_img/1.jpg";
             pictureBox1.Image = new Bitmap(image_path);        }
        private unsafe void button2_Click(object sender, EventArgs e)
         {
             if (image_path == "")
             {
                 return;
             }
             textBox1.Text = "检测中,请稍等……";
             pictureBox2.Image = null;
             sb.Clear();
             System.Windows.Forms.Application.DoEvents();            image = new Mat(image_path);
            dt1 = DateTime.Now;
             List<BoxInfo> ltBoxInfo = pp_yoloe.Detect(image);
             dt2 = DateTime.Now;            Mat result_image = image.Clone();
             //pp_yoloe.DrawPred(result_image, ltBoxInfo);            sb.AppendLine("耗时:" + (dt2 - dt1).TotalMilliseconds + "ms");
             sb.AppendLine("------------------------------");            for (int n = 0; n < ltBoxInfo.Count; n++)
             {                Rect rect = new Rect();
                 rect.X = (int)ltBoxInfo[n].xmin;
                 rect.Y = (int)ltBoxInfo[n].ymin;
                 rect.Width = (int)(ltBoxInfo[n].xmax - ltBoxInfo[n].xmin);
                 rect.Height = (int)(ltBoxInfo[n].ymax - ltBoxInfo[n].ymin);
                 Mat crop_img = new Mat(image, rect);                string color_res_str = "color:";
                 string type_res_str = "type:";                vehicleAttr.Detect(crop_img, out color_res_str, out type_res_str);
                Cv2.Rectangle(result_image, new OpenCvSharp.Point(ltBoxInfo[n].xmin, ltBoxInfo[n].ymin), new OpenCvSharp.Point(ltBoxInfo[n].xmax, ltBoxInfo[n].ymax), new Scalar(0, 0, 255), 2);
                 Cv2.PutText(result_image
                     , type_res_str + "," + color_res_str
                     , new OpenCvSharp.Point(ltBoxInfo[n].xmin, ltBoxInfo[n].ymin - 10)
                     , HersheyFonts.HersheySimplex
                     , 1
                     , new Scalar(0, 255, 0)
                     , 2);                sb.AppendLine("vehicle:" + ltBoxInfo[n].score.ToString("0.00") + " " + type_res_str + "," + color_res_str);
             }             if (pictureBox2.Image != null)
             {
                 pictureBox2.Image.Dispose();
             }            pictureBox2.Image = new System.Drawing.Bitmap(result_image.ToMemoryStream());
             textBox1.Text = sb.ToString();
         }        private void pictureBox2_DoubleClick(object sender, EventArgs e)
         {
             Common.ShowNormalImg(pictureBox2.Image);
         }        private void pictureBox1_DoubleClick(object sender, EventArgs e)
         {
             Common.ShowNormalImg(pictureBox1.Image);
         }
     }
 }


 

using OpenCvSharp;
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
using System.Text;

namespace Onnx_Demo
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }

        string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
        string image_path = "";

        DateTime dt1 = DateTime.Now;
        DateTime dt2 = DateTime.Now;

        Mat image;

        PP_YOLOE pp_yoloe;
        VehicleAttr vehicleAttr;

        StringBuilder sb = new StringBuilder();

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = fileFilter;
            if (ofd.ShowDialog() != DialogResult.OK) return;

            pictureBox1.Image = null;
            pictureBox2.Image = null;
            textBox1.Text = "";

            image_path = ofd.FileName;
            pictureBox1.Image = new System.Drawing.Bitmap(image_path);
            image = new Mat(image_path);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            pp_yoloe = new PP_YOLOE("model/mot_ppyoloe_s_36e_ppvehicle.onnx", 0.6f);

            vehicleAttr = new VehicleAttr("model/vehicle_attribute_model.onnx");

            image_path = "test_img/1.jpg";
            pictureBox1.Image = new Bitmap(image_path);

        }

        private unsafe void button2_Click(object sender, EventArgs e)
        {
            if (image_path == "")
            {
                return;
            }
            textBox1.Text = "检测中,请稍等……";
            pictureBox2.Image = null;
            sb.Clear();
            System.Windows.Forms.Application.DoEvents();

            image = new Mat(image_path);

            dt1 = DateTime.Now;
            List<BoxInfo> ltBoxInfo = pp_yoloe.Detect(image);
            dt2 = DateTime.Now;

            Mat result_image = image.Clone();
            //pp_yoloe.DrawPred(result_image, ltBoxInfo);

            sb.AppendLine("耗时:" + (dt2 - dt1).TotalMilliseconds + "ms");
            sb.AppendLine("------------------------------");

            for (int n = 0; n < ltBoxInfo.Count; n++)
            {

                Rect rect = new Rect();
                rect.X = (int)ltBoxInfo[n].xmin;
                rect.Y = (int)ltBoxInfo[n].ymin;
                rect.Width = (int)(ltBoxInfo[n].xmax - ltBoxInfo[n].xmin);
                rect.Height = (int)(ltBoxInfo[n].ymax - ltBoxInfo[n].ymin);
                Mat crop_img = new Mat(image, rect);

                string color_res_str = "color:";
                string type_res_str = "type:";

                vehicleAttr.Detect(crop_img, out color_res_str, out type_res_str);

                Cv2.Rectangle(result_image, new OpenCvSharp.Point(ltBoxInfo[n].xmin, ltBoxInfo[n].ymin), new OpenCvSharp.Point(ltBoxInfo[n].xmax, ltBoxInfo[n].ymax), new Scalar(0, 0, 255), 2);
                Cv2.PutText(result_image
                    , type_res_str + "," + color_res_str
                    , new OpenCvSharp.Point(ltBoxInfo[n].xmin, ltBoxInfo[n].ymin - 10)
                    , HersheyFonts.HersheySimplex
                    , 1
                    , new Scalar(0, 255, 0)
                    , 2);

                sb.AppendLine("vehicle:" + ltBoxInfo[n].score.ToString("0.00") + " " + type_res_str + "," + color_res_str);
            }


            if (pictureBox2.Image != null)
            {
                pictureBox2.Image.Dispose();
            }

            pictureBox2.Image = new System.Drawing.Bitmap(result_image.ToMemoryStream());
            textBox1.Text = sb.ToString();
        }

        private void pictureBox2_DoubleClick(object sender, EventArgs e)
        {
            Common.ShowNormalImg(pictureBox2.Image);
        }

        private void pictureBox1_DoubleClick(object sender, EventArgs e)
        {
            Common.ShowNormalImg(pictureBox1.Image);
        }
    }
}

下载

源码下载

其他

C# PaddleOCR 车牌识别参考

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月15日 0

暂无评论

推荐阅读
yqdtHKhvd9Ja