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)
  {

  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 基于C#技术实现身份证识别功能

    最近研究C#相关的ORC技术,图像识别一般C和C++这种底层语言做的比较多,C#主要是依托一些封装好的组件进行调用,这里介绍三种身份证识别的方法. 一:调用大公司API接口,百度.云脉,文通科技都有相关的API介绍. 二:调用图像处理类库,EmguCV是OpenCV的一个跨平台的.Net封装,该封装也可以被编译到Mono平台和允许在Windows.Mac OS.Android.iPhone.iPad等多个平台上运行 三:调用Office2007 组件 一.证件识别API接口 以聚合数据中的API

  • C#身份证识别相关技术功能详解

    最近研究C#相关的OCR技术,图像识别一般C和C++这种底层语言做的比较多,C#主要是依托一些封装好的组件进行调用,这里介绍一种身份证识别的方法. 环境搭建 下载地址:EmguCV官网 在File类别下下载这个EXE,进行安装,安装后在目录下能找相应组件,还有些应用的案例. dll文件夹中的dll引用到C#项目中,x64,x86,tessdata对应OCR识别的类库和语言库,我tessdata中已添加中文语言包,将这三个文件夹放入程序执行文件夹中. Demo 自己做的小Demo如图:身份证图片是

  • JavaWeb之会话技术案例详解

    会话技术     1. 会话:一次会话中包含多次请求和响应.            一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止     2. 功能:在一次会话的范围内的多次请求间,共享数据     3. 方式:           1. 客户端会话技术:Cookie           2. 服务器端会话技术:Session Cookie: 1. 概念:客户端会话技术,将数据保存到客户端 2. 快速入门:             1. 创建Cookie对象,绑定数据

  • Python实现语音合成功能详解

    目录 导语 1.直接使用 2. 获取权限 2.1 环境准备: 2.2 获取权限 3. 代码实现 3.1 获取access_token 3.2 获取转换后音频 3.3 配置接口参数 3.4 完整demo 3.5 执行 导语 今天就给大家带来个语言识别跟语言赚文字的小工具感兴趣的铁汁萌可以往下滑了 1.直接使用 在1.2官网注册后拿到APISecret和APIKey,直接复制文章2.4demo代码,保存为online_tts.py,在命令行执行 python online_tts.py -clien

  • Python爬虫爬验证码实现功能详解

    主要实现功能: - 登陆网页 - 动态等待网页加载 - 验证码下载 很早就有一个想法,就是自动按照脚本执行一个功能,节省大量的人力--个人比较懒.花了几天写了写,本着想完成验证码的识别,从根本上解决问题,只是难度太高,识别的准确率又太低,计划再次告一段落. 希望这次经历可以与大家进行分享和交流. Python打开浏览器 相比与自带的urllib2模块,操作比较麻烦,针对于一部分网页还需要对cookie进行保存,很不方便.于是,我这里使用的是Python2.7下的selenium模块进行网页上的操

  • Node.js 条形码识别程序构建思路详解

    在这篇文章中,我们将展示一个非常简单的方法构建一个自定义的 Node 模块,该模块封装了Dynamsoft Barcode Reader SDK ,支持 Windows.Linux 和 OS X,同时我们将演示如何集成这块模块实现一个在线的条形码读取应用. 越来越多的 Web 开发者选择 Node 来构建网站,因为使用 JavaScript 来开发复杂的服务器端 Web 应用越来越便利.为了扩展在不同平台下的 Node 的功能,Node 允许开发者使用 C/C++ 来创建扩展. 介绍 Dynam

  • 使用C++扩展Python的功能详解

    本文主要研究的是使用C++扩展Python的功能的相关问题,具体如下. 环境 VS2005Python2.5.4Windows7(32位) 简介 长话短说,这里说的扩展Python功能与直接用其它语言写一个动态链接库,然后让Python来调用有点不一样(虽然本质是一样的).而是指使用Python本身提供的API,使用C++来对Python进行功能性扩展,可以这样理解,使用更高效的语言实现一些算法计算等等需要更高执行效率的核心(或者需要与系统进行密切交互的)模块,然后让Python像调用内建标准库

  • 如何利用Python识别图片中的文字详解

    一.Tesseract 文字识别是ORC的一部分内容,ORC的意思是光学字符识别,通俗讲就是文字识别.Tesseract是一个用于文字识别的工具,我们结合Python使用可以很快的实现文字识别.但是在此之前我们需要完成一个繁琐的工作. (1)Tesseract的安装及配置 Tesseract的安装我们可以移步到该网址 https://digi.bib.uni-mannheim.de/tesseract/,我们可以看到如下界面: 有很多版本供大家选择,大家可以根据自己的需求选择.其中w32表示32

  • Java字节码增强技术知识点详解

    简单介绍下几种java字节码增强技术. ASM ASM是一个Java字节码操控框架,它能被用来动态生成类或者增强既有类的功能.ASM可以直接产生class文件,也可以在类被加载入Java虚拟机之前动态改变类行为.ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类. 主页:https://asm.ow2.io/index.html ASM框架中的核心类有以下几个: ① ClassReader:该类用来解析编译过的class字节码文件. ② ClassWriter:

  • Python OpenCV实现识别信用卡号教程详解

    目录 通过与 OpenCV 模板匹配的 OCR 信用卡 OCR 结果 总结 今天的博文分为三个部分. 在第一部分中,我们将讨论 OCR-A 字体,这是一种专为辅助光学字符识别算法而创建的字体. 然后我们将设计一种计算机视觉和图像处理算法,它可以: 本地化信用卡上的四组四位数字. 提取这四个分组中的每一个,然后单独分割 16 个数字中的每一个. 使用模板匹配和 OCR-A 字体识别 16 个信用卡数字中的每一个. 最后,我们将看一些将信用卡 OCR 算法应用于实际图像的示例. 通过与 OpenCV

  • 微服务架构之服务注册与发现功能详解

    目录 微服务的注册与发现 1.服务注册 2.服务发现 3.注册中心 4.现下的主流注册中心 4.1 Eureka 4.1.1 介绍 4.1.2 整体架构 4.1.3 接入Spring Cloud 4.2 ZooKeeper 4.2.1 介绍 4.2.2 整体架构 4.2.3 接入Dubbo生态 4.3 Consul 4.3.1 介绍 4.3.2 整体架构 4.3.3 生态对接 4.4 总结对比 详解微服务架构及其演进史 微服务全景架构全面瓦解 微服务架构拆分策略详解 微服务的注册与发现 我们前面

随机推荐