C#实现身份证识别功能的图文代码详解
导读:收集整理的这篇文章主要介绍了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核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: C#实现身份证识别功能的图文代码详解
本文地址: https://pptw.com/jishu/592539.html
