首頁 後端開發 C#.Net教程 C#實現身分證辨識功能的圖文代碼詳解

C#實現身分證辨識功能的圖文代碼詳解

Jul 17, 2017 am 11:02 AM
.net 身分證

這篇文章主要介紹了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
 {
  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)
  {
   //第一个参数是语言包文件夹的地址,不写默认在执行文件夹下
   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>
  /// 旋转校正
  /// </summary>
  /// <param name="imageInput"></param>
  /// <returns></returns>
  private Image<Gray, Byte> randon(Image<Gray, Byte> imageInput)//图像投影旋转法倾斜校正子函数定义
  {
   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度范围内的调整
   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#實現身分證辨識功能的圖文代碼詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

一張身分證可以開幾家淘寶店 一張身分證可以開幾家淘寶店 Oct 10, 2023 pm 01:51 PM

一個身分證只能開設一個淘寶店,賣家應該遵守淘寶平台的規定,不要嘗試使用其他人的身分證來開設多個店。賣家可以透過店鋪合併和開設分店的方式來拓展業務,提高銷售額。但是要注意的是,每家分店都需要使用獨立的身分證進行實名認證。

分享幾個.NET開源的AI和LLM相關專案框架 分享幾個.NET開源的AI和LLM相關專案框架 May 06, 2024 pm 04:43 PM

當今人工智慧(AI)技術的發展如火如荼,它們在各個領域都展現了巨大的潛力和影響力。今天大姚給大家分享4個.NET開源的AI模型LLM相關的專案框架,希望能為大家提供一些參考。 https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel是一種開源的軟體開發工具包(SDK),旨在將大型語言模型(LLM)如OpenAI、Azure

C#的就業前景如何 C#的就業前景如何 Oct 19, 2023 am 11:02 AM

無論您是初學者還是有經驗的專業人士,掌握C#將為您的職業發展鋪平道路。

手機和身分證在一起會消磁嗎 手機和身分證在一起會消磁嗎 Aug 14, 2023 pm 02:33 PM

手機和身分證在一起不會消磁,原因是:1、身分證內部整合有線圈和晶片,與傳統磁帶、硬碟等儲存媒體不同,不存在被磁化的物質;2、手機的電磁輻射屬於高頻電磁波,其頻率高達數十萬至數千萬赫茲,根本沒有磁化身分證的能力。而手機揚聲器中的磁鐵也不會對身分證產生消磁的影響。我們可以放心將身分證和手機放在一起,並且注意避免身分證的損壞,保護其正常使用,以便更好的為我們服務。

面向開發人員的.NET效能最佳化技術 面向開發人員的.NET效能最佳化技術 Sep 12, 2023 am 10:43 AM

如果你是.NET開發者,你必須意識到在交付高品質軟體方面,優化功能和效能的重要性。透過熟練使用提供的資源並減少網站載入時間,你不僅為使用者創造了愉快的體驗,還能減少基礎設施成本。

Java框架與.NET框架的效能差異 Java框架與.NET框架的效能差異 Jun 03, 2024 am 09:19 AM

在高並發請求處理方面,.NETASP.NETCoreWebAPI效能優於JavaSpringMVC,原因包括:AOT提前編譯,減少啟動時間;更精細的記憶體管理,由開發人員負責分配和釋放物件記憶體。

nfc能辨識身分證嗎 nfc能辨識身分證嗎 Nov 03, 2022 pm 02:30 PM

nfc能辨識身分證;早在2015年,中國移動便宣布旗下自有品牌N1開放了NFC識別身分證的功能,透過專門的APP可以用手機讀取身分證資訊進行實名認證;一旦手機普及辨識身份證或擁有身分證的功能,利用數位密碼或指紋密碼,一定程度上提高了其使用的安全性和防偽性。

PHP正規表示式符合身分證號碼的實用指南 PHP正規表示式符合身分證號碼的實用指南 Mar 05, 2024 pm 02:12 PM

PHP正規表示式是一種強大的工具,可以幫助開發人員處理各種文字資料。在實際開發中,經常涉及對身分證號碼的驗證和提取。本文將介紹如何使用PHP正規表示式來匹配身分證號碼,並提供具體的程式碼範例。身分證號碼是一種重要的個人識別訊息,通常包含18位數和一個校驗碼。有效的身份證號碼應該符合一定的格式和規則,例如對出生日期、地區碼、性別碼等進行了限制。下面是一

See all articles