首页后端开发ASP.NETC#实现身份证识别功能的图文代码详解

C#实现身份证识别功能的图文代码详解

时间2024-01-30 12:47:02发布访客分类ASP.NET浏览733
导读:收集整理的这篇文章主要介绍了C#实现身份证识别功能的图文代码详解,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要介绍了C#身份证识别相关技术详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下最近研究C#相关的OCR技术,图...
收集整理的这篇文章主要介绍了C#实现身份证识别功能的图文代码详解,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要介绍了C#身份证识别相关技术详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

最近研究C#相关的OCR技术,图像识别一般C和C++这种底层语言做的比较多,C#主要是依托一些封装好的组件进行调用,这里介绍一种身份证识别的方法。

环境搭建

下载地址:EmguCV官网

在File类别下下载这个EXE,进行安装,安装后在目录下能找相应组件,还有些应用的案例。

dll文件夹中的dll引用到C#项目中,x64,x86,teSSData对应OCR识别的类库和语言库,我tessdata中已添加中文语言包,将这三个文件夹放入程序执行文件夹中。

Demo

自己做的小Demo如图:身份证图片是百度上下载的

不得不说这个类库唯一弊端就是文字识别率太低,图像识别效果也不太好

using System;
    using System.Collections.Generic;
    using System.componentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Emgu.CV;
    using Emgu.CV.OCR;
    using Emgu.CV.Structure;
    using System.IO;
namespace EmguCV{
 public partial class Form1 : Form {
      ImageGray, Byte>
     imageThreshold;
  public Form1()  {
       InITializeComponent();
       pictureBox1.Enabled = false;
  }
  PRivate void Form1_Load(object sender, Eventargs e)  {
  }
  private void button1_Click(object sender, EventArgs e)  {
       //第一个参数是语言包文件夹的地址,不写默认在执行文件夹下   Tesseract _ocr = new Tesseract(@"", "chi_sim", OcrEngineMode.TesseractOnly);
       _ocr.SetImage(imageThreshold);
       _ocr.Recognize();
       String text = _ocr.GetUTF8Text();
       this.textBox1.Text = text;
  }
  private void pictureBox2_Click(object sender, EventArgs e)  {
       OPEnFileDiaLOG of = new OpenFileDialog();
       of.Title = "请选择图片";
   if (of.ShowDialog() == DialogResult.OK)   {
        string file = of.FileName;
        Image img = Image.FromFile(file);
        pictureBox1.Image = img;
   }
       Bitmap bitmap = (Bitmap)this.pictureBox1.Image;
       ImageBgr, Byte>
     imageSource = new ImageBgr, byte>
    (bitmap);
       ImageGray, Byte>
     imageGrayscale = imageSource.ConvertGray, Byte>
    ();
       imageGrayscale = randon(imageGrayscale);
       imageThreshold = imageGrayscale.ThresholdBinary(new Gray(100), new Gray(255));
       this.pictureBox2.Image = imageThreshold.ToBitmap();
  }
      /// summary>
      /// 旋转校正  /// /summary>
      /// param name="imageinput">
    /param>
      /// returns>
    /returns>
      private ImageGray, Byte>
     randon(ImageGray, Byte>
 imageInput)//图像投影旋转法倾斜校正子函数定义  {
       int nwidth = imageInput.Width;
       int nheight = imageInput.Height;
       int sum;
       int SumOfcha;
       int SumOfChatemp = 0;
       int[] sumhang = new int[nheight];
       ImageGray, Byte>
     resultImage = imageInput;
       ImageGray, Byte>
     Imrotaimage;
       //20度范围内的调整   for (int ang = -20;
     ang  20;
 ang = ang + 1)   {
        ImrotaImage = imageInput.Rotate(ang, new Gray(1));
        for (int i = 0;
     i  nheight;
 i++)    {
         sum = 0;
         for (int j = 0;
     j  nwidth;
 j++)     {
          sum += ImrotaImage.Data[i, j, 0];
     }
         sumhang[i] = sum;
    }
        SumOfCha = 0;
        for (int k = 0;
     k  nheight - 1;
 k++)    {
         SumOfCha = SumOfCha + (Math.Abs(sumhang[k] - sumhang[k + 1]));
    }
        if (SumOfCha >
 SumOfChatemp)    {
         resultImage = ImrotaImage;
         SumOfChatemp = SumOfCha;
    }
   }
       return resultImage;
  }
  private void pictureBox1_Click(object sender, EventArgs e)  {
  }
 }
}
    

以上就是C#实现身份证识别功能的图文代码详解的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

.netcsharp

若转载请注明出处: C#实现身份证识别功能的图文代码详解
本文地址: https://pptw.com/jishu/592539.html
javascript怎么实现窗口置顶 关于C#如何实现Access以时间段查询出来的的数据添加到ListView中

游客 回复需填写必要信息