久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

C#身份證識別相關技術功能詳解

這篇文章主要介紹了C#身份證識別相關技術詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近研究C#相關的OCR技術,圖像識別一般C和C++這種底層語言做的比較多,C#主要是依托一些封裝好的組件進行調(diào)用,這里介紹一種身份證識別的方法。

環(huán)境搭建

下載地址:EmguCV官網(wǎng)

在File類別下下載這個EXE,進行安裝,安裝后在目錄下能找相應組件,還有些應用的案例。

dll文件夾中的dll引用到C#項目中,x64,x86,tessdata對應OCR識別的類庫和語言庫,我tessdata中已添加中文語言包,將這三個文件夾放入程序執(zhí)行文件夾中。

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
 {
  Image<Gray, Byte> imageThreshold;
  public Form1()
  {
   InitializeComponent();
   pictureBox1.Enabled = false;
  }

  private void Form1_Load(object sender, EventArgs e)
  {



  }

  private void button1_Click(object sender, EventArgs e)
  {
   //第一個參數(shù)是語言包文件夾的地址,不寫默認在執(zhí)行文件夾下
   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;
   Image<Bgr, Byte> imageSource = new Image<Bgr, byte>(bitmap);
   Image<Gray, Byte> imageGrayscale = imageSource.Convert<Gray, Byte>();
   imageGrayscale = randon(imageGrayscale);
   imageThreshold = imageGrayscale.ThresholdBinary(new Gray(100), new Gray(255));
   this.pictureBox2.Image = imageThreshold.ToBitmap();
  }
  /// <summary>
  /// 旋轉(zhuǎn)校正
  /// </summary>
  /// <param name="imageInput"></param>
  /// <returns></returns>
  private Image<Gray, Byte> randon(Image<Gray, Byte> imageInput)//圖像投影旋轉(zhuǎn)法傾斜校正子函數(shù)定義
  {
   int nwidth = imageInput.Width;
   int nheight = imageInput.Height;
   int sum;
   int SumOfCha;
   int SumOfChatemp = 0;
   int[] sumhang = new int[nheight];
   Image<Gray, Byte> resultImage = imageInput;
   Image<Gray, Byte> ImrotaImage;
   //20度范圍內(nèi)的調(diào)整
   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)
  {

  }
 }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持html5模板網(wǎng)。

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權益,請聯(lián)系我們刪除處理,感謝您的支持!

相關文檔推薦

主站蜘蛛池模板: 欧美日韩在线综合 | 在线视频91 | 99精品欧美一区二区三区综合在线 | 亚洲精品久久久久久一区二区 | 久久逼逼| 国产中文字幕在线 | 韩国成人在线视频 | 九九热国产精品视频 | 国产一区不卡 | 天天干天天操天天射 | 国产精品一区二区免费看 | 久久精品国产99国产精品亚洲 | 亚洲国产片 | 97色在线观看免费视频 | 国产欧美一区二区在线观看 | 久久99精品久久久久久秒播九色 | 国产一区二区不卡 | 亚洲精品乱码久久久久久按摩观 | 9999精品视频 | 一级毛片观看 | 在线观看黄免费 | 久久久国产精品 | 91人人澡人人爽 | 欧美精品一区二区三区四区 | 色视频网站 | 91在线观看 | 亚洲第1页 | 亚洲日韩视频 | 日韩在线免费 | 欧美一区二区另类 | 国产一区二区三区四区 | 国产精品视频久久 | 久久免费视频网 | 久久精品成人 | 欧美一级片在线观看 | 国产精品一区二区在线播放 | 国产一级视频在线 | 黄色片免费在线观看 | 国产xxx在线观看 | 国产精品久久久久久久免费大片 | 国产二区av |