当前位置:   article > 正文

[C#]winform部署yolov7+CRNN实现车牌颜色识别车牌号检测识别_c# yolo 车牌识别

c# yolo 车牌识别

【官方框架地址】

https://github.com/WongKinYiu/yolov7.git

【框架介绍】

Yolov7是一种目标检测算法,全称You Only Look Once version 7。它是继Yolov3和Yolov4之后的又一重要成果,是目标检测领域的一个重要里程碑。

Yolov7在算法结构上继承了其前作Yolov3和Yolov4的设计思想,但在许多方面进行了优化和改进。它采用了深度学习技术,利用卷积神经网络对图像进行特征提取,并通过一系列的算法步骤,实现对目标物体的检测和识别。

相比于之前的版本,Yolov7在检测精度和速度上都有了显著的提升。它采用了更深的网络结构,增加了更多的特征层次,提高了特征提取的精度。同时,Yolov7还采用了多尺度特征融合技术,将不同尺度的特征进行融合,增强了模型对不同大小目标的检测能力。

此外,Yolov7还引入了一些新的技术手段,如注意力机制和上下文信息编码等,进一步提高了检测的准确性和鲁棒性。这些技术的引入,使得Yolov7在各种复杂场景下都能表现出色,成为目标检测领域的一个重要里程碑。

总的来说,Yolov7是一种高效、准确的目标检测算法,它在速度和精度上都达到了较高的水平。随着深度学习技术的不断发展,我们有理由相信,Yolov7将继续引领目标检测领域的发展,为人们的生活和工作带来更多的便利和价值

CRNN(Convolutional Recurrent Neural Network)是一种常用于序列化文本识别的深度学习模型,由卷积神经网络(CNN)、循环神经网络(RNN)和转录层(CTC)组成。CRNN模型通过结合CNN和RNN的优点,能够有效地处理图像中的序列化文本,包括识别、转录和校正等任务。

CRNN模型的主要结构包括三个部分:卷积神经网络(CNN)、循环神经网络(RNN)和转录层(CTC)。

  1. 卷积神经网络(CNN)用于提取输入图像的特征。通过卷积操作,CNN能够从图像中提取局部特征,并通过池化操作降低特征图的维度,从而减少计算量并提高模型的泛化能力。
  2. 循环神经网络(RNN)用于处理序列化数据。在CRNN模型中,RNN通常采用LSTM(Long Short-Term Memory)或GRU(Gated Recurrent Unit)等变体,能够有效地捕获序列中的长期依赖关系。
  3. 转录层(CTC)用于将RNN的输出转换为文本序列。CTC通过动态规划算法,将RNN的输出序列转换为最可能的文本序列。

CRNN模型在文本识别任务中具有广泛的应用,包括车牌识别、路标识别、光学字符识别等。此外,CRNN模型还可以与其他技术相结合,如注意力机制、Transformer等,进一步提高模型的性能和准确率。
【效果展示】


【实现部分代码】

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Diagnostics;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using OpenCvSharp;
  12. namespace FIRC
  13. {
  14. public partial class Form1 : Form
  15. {
  16. Bitmap bmp = null;
  17. PlateManager pm = new PlateManager();
  18. public Form1()
  19. {
  20. InitializeComponent();
  21. }
  22. private void button1_Click(object sender, EventArgs e)
  23. {
  24. OpenFileDialog openFileDialog = new OpenFileDialog();
  25. openFileDialog.Filter = "图文件(*.*)|*.jpg;*.png;*.jpeg;*.bmp";
  26. openFileDialog.RestoreDirectory = true;
  27. openFileDialog.Multiselect = false;
  28. if (openFileDialog.ShowDialog() == DialogResult.OK)
  29. {
  30. if(bmp!=null)
  31. {
  32. bmp.Dispose();
  33. }
  34. bmp = new Bitmap(openFileDialog.FileName);
  35. pictureBox1.Image = bmp;
  36. }
  37. }
  38. private void button2_Click(object sender, EventArgs e)
  39. {
  40. if(pictureBox1.Image==null)
  41. {
  42. return;
  43. }
  44. Stopwatch sw = new Stopwatch();
  45. sw.Start();
  46. var result = pm.Inference(bmp);
  47. sw.Stop();
  48. this.Text = "耗时" + sw.Elapsed.TotalSeconds + "秒";
  49. var resultImg = pm.DrawImage(bmp,result);
  50. pictureBox2.Image = resultImg;
  51. }
  52. private void Form1_Load(object sender, EventArgs e)
  53. {
  54. pm.LoadWeights();
  55. }
  56. private void btn_video_Click(object sender, EventArgs e)
  57. {
  58. VideoCapture capture = new VideoCapture(0);
  59. if (!capture.IsOpened())
  60. {
  61. Console.WriteLine("video not open!");
  62. return;
  63. }
  64. Mat frame = new Mat();
  65. var sw = new Stopwatch();
  66. int fps = 0;
  67. while (true)
  68. {
  69. capture.Read(frame);
  70. if (frame.Empty())
  71. {
  72. Console.WriteLine("data is empty!");
  73. break;
  74. }
  75. sw.Start();
  76. var bmp = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(frame);
  77. var result = pm.Inference(bmp);
  78. var resultImg = pm.DrawImage(bmp, result);
  79. var resultMat = OpenCvSharp.Extensions.BitmapConverter.ToMat(resultImg);
  80. sw.Stop();
  81. fps = Convert.ToInt32(1 / sw.Elapsed.TotalSeconds);
  82. sw.Reset();
  83. Cv2.PutText(resultMat, "FPS=" + fps, new OpenCvSharp.Point(30, 30), HersheyFonts.HersheyComplex, 1.0, new Scalar(255, 0, 0), 3);
  84. //显示结果
  85. Cv2.ImShow("Result", resultMat);
  86. int key = Cv2.WaitKey(10);
  87. if (key == 27)
  88. break;
  89. }
  90. capture.Release();
  91. }
  92. }
  93. }


【视频演示】

https://www.bilibili.com/video/BV1i5411y7FK/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee
【源码下载】

https://download.csdn.net/download/FL1623863129/88781345
【测试环境】

VS2019.netframework4.7.2
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/997821
推荐阅读
相关标签
  

闽ICP备14008679号