百度驾驶证C++离线SDK V1.1 C#接入
目录
说明
效果
项目
代码
下载
说明
自己根据SDK封装了动态库,然后C#调用。
SDK包结构
效果
项目
代码
using Newtonsoft.Json;
using OpenCvSharp;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using 驾驶证测试.Commom;
namespace 驾驶证测试
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
string image_path = "";
bool isDraw = false;
private void Form1_Load(object sender, EventArgs e)
{
image_path = Application.StartupPath + "\\front_images\\1.png";
pictureBox1.Image = new Bitmap(image_path);
}
private void button4_Click(object sender, EventArgs e)
{
image_path = Application.StartupPath + "\\front_images\\1.png";
Mat image = new Mat(image_path);
pictureBox1.Image = new Bitmap(image_path);
}
private void button5_Click(object sender, EventArgs e)
{
image_path = Application.StartupPath + "\\back_images\\1.png";
pictureBox1.Image = new Bitmap(image_path);
}
private void button2_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = fileFilter;
if (ofd.ShowDialog() != DialogResult.OK) return;
pictureBox1.Image = null;
image_path = ofd.FileName;
pictureBox1.Image = new Bitmap(image_path);
textBox1.Text = "";
}
private void button1_Click(object sender, EventArgs e)
{
if (image_path == "")
{
return;
}
textBox1.Text = "";
Application.DoEvents();
string ocr_result1 = "";
string ocr_result2 = "";
Mat image = new Mat(image_path);
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
int res = DL_OCR_Helper.dl_front_ocr2(image, out ocr_result1, out ocr_result2);
stopwatch.Stop();
double totalTime = stopwatch.Elapsed.TotalSeconds;
textBox1.Text += $"耗时: {totalTime:F2}s";
textBox1.Text += "\r\n-------------------\r\n";
if (res == 0)
{
Object jsonObject = JsonConvert.DeserializeObject(ocr_result1.ToString());
textBox1.Text += JsonConvert.SerializeObject(jsonObject, Newtonsoft.Json.Formatting.Indented);
textBox1.Text += "\r\n-------------------\r\n";
Object jsonObject2 = JsonConvert.DeserializeObject(ocr_result2.ToString());
textBox1.Text += JsonConvert.SerializeObject(jsonObject2, Newtonsoft.Json.Formatting.Indented);
List<OcrRes2> lt = JsonConvert.DeserializeObject<List<OcrRes2>>(ocr_result2.ToString());
foreach (OcrRes2 item in lt)
{
string[] pts = item.coordinator.Split(' ');
//多边形的顶点
OpenCvSharp.Point[] points = new OpenCvSharp.Point[]
{
new OpenCvSharp.Point(Convert.ToDouble( pts[0]), Convert.ToDouble( pts[1])),
new OpenCvSharp.Point(Convert.ToDouble( pts[2]), Convert.ToDouble( pts[3])),
new OpenCvSharp.Point(Convert.ToDouble( pts[4]), Convert.ToDouble( pts[5])),
new OpenCvSharp.Point(Convert.ToDouble( pts[6]), Convert.ToDouble( pts[7])),
};
// 绘制多边形
if (isDraw)
{
Cv2.Polylines(image, new OpenCvSharp.Point[][] { points }, isClosed: true, color: new Scalar(0, 255, 0), thickness: 3);
}
}
if (pictureBox1.Image != null)
{
pictureBox1.Image.Dispose();
pictureBox1.Image = null;
}
pictureBox1.Image = new Bitmap(image.ToMemoryStream());
image.Dispose();
}
else
{
textBox1.Text = "识别失败";
}
}
private void button3_Click(object sender, EventArgs e)
{
if (image_path == "")
{
return;
}
textBox1.Text = "";
Mat image = new Mat(image_path);
Application.DoEvents();
string ocr_result1 = "";
string ocr_result2 = "";
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
int res = DL_OCR_Helper.dl_back_ocr2(image, out ocr_result1, out ocr_result2);
stopwatch.Stop();
double totalTime = stopwatch.Elapsed.TotalSeconds;
textBox1.Text += $"耗时: {totalTime:F2}s";
textBox1.Text += "\r\n-------------------\r\n";
if (res == 0)
{
Object jsonObject = JsonConvert.DeserializeObject(ocr_result1.ToString());
textBox1.Text += JsonConvert.SerializeObject(jsonObject, Newtonsoft.Json.Formatting.Indented);
textBox1.Text += "\r\n-------------------\r\n";
Object jsonObject2 = JsonConvert.DeserializeObject(ocr_result2.ToString());
textBox1.Text += JsonConvert.SerializeObject(jsonObject2, Newtonsoft.Json.Formatting.Indented);
List<OcrRes2> lt = JsonConvert.DeserializeObject<List<OcrRes2>>(ocr_result2.ToString());
foreach (OcrRes2 item in lt)
{
string[] pts = item.coordinator.Split(' ');
//多边形的顶点
OpenCvSharp.Point[] points = new OpenCvSharp.Point[]
{
new OpenCvSharp.Point(Convert.ToDouble( pts[0]), Convert.ToDouble( pts[1])),
new OpenCvSharp.Point(Convert.ToDouble( pts[2]), Convert.ToDouble( pts[3])),
new OpenCvSharp.Point(Convert.ToDouble( pts[4]), Convert.ToDouble( pts[5])),
new OpenCvSharp.Point(Convert.ToDouble( pts[6]), Convert.ToDouble( pts[7])),
};
// 绘制多边形
if (isDraw)
{
Cv2.Polylines(image, new OpenCvSharp.Point[][] { points }, isClosed: true, color: new Scalar(0, 255, 0), thickness: 3);
}
}
if (pictureBox1.Image != null)
{
pictureBox1.Image.Dispose();
pictureBox1.Image = null;
}
pictureBox1.Image = new Bitmap(image.ToMemoryStream());
image.Dispose();
}
else
{
textBox1.Text = "识别失败";
}
}
private void button6_Click(object sender, EventArgs e)
{
DL_OCR_Helper.InitStatus();
//授权校验 初始化引擎
string key = "";
string licenseKeyPath = Application.StartupPath + "\\license\\license.key";
string licenseFile = Application.StartupPath + "\\license\\license.ini";
int res = -1;
string ini_path = "";
key = File.ReadAllText(licenseKeyPath);
res = DL_OCR_Helper.dl_front_init_license(key, licenseFile, false);
if (res != 0)
{
MessageBox.Show(DL_OCR_Helper.GetMsg(res));
return;
}
res = DL_OCR_Helper.dl_front_create();
if (res != 0)
{
MessageBox.Show("驾驶证正页创建引擎失败!");
return;
}
ini_path = Application.StartupPath + "\\front_resource";
res = DL_OCR_Helper.dl_front_init(ini_path);
if (res != 0)
{
MessageBox.Show(DL_OCR_Helper.GetMsg(res));
return;
}
res = DL_OCR_Helper.dl_back_init_license(key, licenseFile, false);
if (res != 0)
{
MessageBox.Show(DL_OCR_Helper.GetMsg(res));
return;
}
res = DL_OCR_Helper.dl_back_create();
if (res != 0)
{
MessageBox.Show("驾驶证副页创建引擎失败!");
return;
}
ini_path = Application.StartupPath + "\\back_resource";
res = DL_OCR_Helper.dl_back_init(ini_path);
if (res != 0)
{
MessageBox.Show(DL_OCR_Helper.GetMsg(res));
return;
}
MessageBox.Show("初始化成功!");
button1.Enabled = true;
button3.Enabled = true;
}
}
}
using Newtonsoft.Json;
using OpenCvSharp;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using 驾驶证测试.Commom;namespace 驾驶证测试
{public partial class Form1 : Form{public Form1(){InitializeComponent();}string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";string image_path = "";bool isDraw = false;private void Form1_Load(object sender, EventArgs e){image_path = Application.StartupPath + "\\front_images\\1.png";pictureBox1.Image = new Bitmap(image_path);}private void button4_Click(object sender, EventArgs e){image_path = Application.StartupPath + "\\front_images\\1.png";Mat image = new Mat(image_path);pictureBox1.Image = new Bitmap(image_path);}private void button5_Click(object sender, EventArgs e){image_path = Application.StartupPath + "\\back_images\\1.png";pictureBox1.Image = new Bitmap(image_path);}private void button2_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = fileFilter;if (ofd.ShowDialog() != DialogResult.OK) return;pictureBox1.Image = null;image_path = ofd.FileName;pictureBox1.Image = new Bitmap(image_path);textBox1.Text = "";}private void button1_Click(object sender, EventArgs e){if (image_path == ""){return;}textBox1.Text = "";Application.DoEvents();string ocr_result1 = "";string ocr_result2 = "";Mat image = new Mat(image_path);Stopwatch stopwatch = new Stopwatch();stopwatch.Start();int res = DL_OCR_Helper.dl_front_ocr2(image, out ocr_result1, out ocr_result2);stopwatch.Stop();double totalTime = stopwatch.Elapsed.TotalSeconds;textBox1.Text += $"耗时: {totalTime:F2}s";textBox1.Text += "\r\n-------------------\r\n";if (res == 0){Object jsonObject = JsonConvert.DeserializeObject(ocr_result1.ToString());textBox1.Text += JsonConvert.SerializeObject(jsonObject, Newtonsoft.Json.Formatting.Indented);textBox1.Text += "\r\n-------------------\r\n";Object jsonObject2 = JsonConvert.DeserializeObject(ocr_result2.ToString());textBox1.Text += JsonConvert.SerializeObject(jsonObject2, Newtonsoft.Json.Formatting.Indented);List<OcrRes2> lt = JsonConvert.DeserializeObject<List<OcrRes2>>(ocr_result2.ToString());foreach (OcrRes2 item in lt){string[] pts = item.coordinator.Split(' ');//多边形的顶点OpenCvSharp.Point[] points = new OpenCvSharp.Point[]{new OpenCvSharp.Point(Convert.ToDouble( pts[0]), Convert.ToDouble( pts[1])),new OpenCvSharp.Point(Convert.ToDouble( pts[2]), Convert.ToDouble( pts[3])),new OpenCvSharp.Point(Convert.ToDouble( pts[4]), Convert.ToDouble( pts[5])),new OpenCvSharp.Point(Convert.ToDouble( pts[6]), Convert.ToDouble( pts[7])),};// 绘制多边形if (isDraw){Cv2.Polylines(image, new OpenCvSharp.Point[][] { points }, isClosed: true, color: new Scalar(0, 255, 0), thickness: 3);}}if (pictureBox1.Image != null){pictureBox1.Image.Dispose();pictureBox1.Image = null;}pictureBox1.Image = new Bitmap(image.ToMemoryStream());image.Dispose();}else{textBox1.Text = "识别失败";}}private void button3_Click(object sender, EventArgs e){if (image_path == ""){return;}textBox1.Text = "";Mat image = new Mat(image_path);Application.DoEvents();string ocr_result1 = "";string ocr_result2 = "";Stopwatch stopwatch = new Stopwatch();stopwatch.Start();int res = DL_OCR_Helper.dl_back_ocr2(image, out ocr_result1, out ocr_result2);stopwatch.Stop();double totalTime = stopwatch.Elapsed.TotalSeconds;textBox1.Text += $"耗时: {totalTime:F2}s";textBox1.Text += "\r\n-------------------\r\n";if (res == 0){Object jsonObject = JsonConvert.DeserializeObject(ocr_result1.ToString());textBox1.Text += JsonConvert.SerializeObject(jsonObject, Newtonsoft.Json.Formatting.Indented);textBox1.Text += "\r\n-------------------\r\n";Object jsonObject2 = JsonConvert.DeserializeObject(ocr_result2.ToString());textBox1.Text += JsonConvert.SerializeObject(jsonObject2, Newtonsoft.Json.Formatting.Indented);List<OcrRes2> lt = JsonConvert.DeserializeObject<List<OcrRes2>>(ocr_result2.ToString());foreach (OcrRes2 item in lt){string[] pts = item.coordinator.Split(' ');//多边形的顶点OpenCvSharp.Point[] points = new OpenCvSharp.Point[]{new OpenCvSharp.Point(Convert.ToDouble( pts[0]), Convert.ToDouble( pts[1])),new OpenCvSharp.Point(Convert.ToDouble( pts[2]), Convert.ToDouble( pts[3])),new OpenCvSharp.Point(Convert.ToDouble( pts[4]), Convert.ToDouble( pts[5])),new OpenCvSharp.Point(Convert.ToDouble( pts[6]), Convert.ToDouble( pts[7])),};// 绘制多边形if (isDraw){Cv2.Polylines(image, new OpenCvSharp.Point[][] { points }, isClosed: true, color: new Scalar(0, 255, 0), thickness: 3);}}if (pictureBox1.Image != null){pictureBox1.Image.Dispose();pictureBox1.Image = null;}pictureBox1.Image = new Bitmap(image.ToMemoryStream());image.Dispose();}else{textBox1.Text = "识别失败";}}private void button6_Click(object sender, EventArgs e){DL_OCR_Helper.InitStatus();//授权校验 初始化引擎string key = "";string licenseKeyPath = Application.StartupPath + "\\license\\license.key";string licenseFile = Application.StartupPath + "\\license\\license.ini";int res = -1;string ini_path = "";key = File.ReadAllText(licenseKeyPath);res = DL_OCR_Helper.dl_front_init_license(key, licenseFile, false);if (res != 0){MessageBox.Show(DL_OCR_Helper.GetMsg(res));return;}res = DL_OCR_Helper.dl_front_create();if (res != 0){MessageBox.Show("驾驶证正页创建引擎失败!");return;}ini_path = Application.StartupPath + "\\front_resource";res = DL_OCR_Helper.dl_front_init(ini_path);if (res != 0){MessageBox.Show(DL_OCR_Helper.GetMsg(res));return;}res = DL_OCR_Helper.dl_back_init_license(key, licenseFile, false);if (res != 0){MessageBox.Show(DL_OCR_Helper.GetMsg(res));return;}res = DL_OCR_Helper.dl_back_create();if (res != 0){MessageBox.Show("驾驶证副页创建引擎失败!");return;}ini_path = Application.StartupPath + "\\back_resource";res = DL_OCR_Helper.dl_back_init(ini_path);if (res != 0){MessageBox.Show(DL_OCR_Helper.GetMsg(res));return;}MessageBox.Show("初始化成功!");button1.Enabled = true;button3.Enabled = true;}}
}
下载
C++封装源码下载
C#调用源码下载
SDK下载