C#(VS10)调用HALCON12----实现数字识别
2017-03-01 16:05
411 查看
C#(VS10)调用HALCON12----实现数字识别
参考自:http://www.cnblogs.com/hanzhaoxin/archive/2013/02/07/2908924.html
1、HALCON源码
2、使用HALCON导出C#代码
sce.cs代码为:
3、C#调用HALCON
(1)新建一个C#窗体程序:Cha_Test。
(2)引用halcondotnet.dll和导出的sce.cs文件。并对sce.cs中的代码进行修改。
修改后的sce.cs代码:
(3)修改Form1.cs代码:
4、运行结果
参考自:http://www.cnblogs.com/hanzhaoxin/archive/2013/02/07/2908924.html
1、HALCON源码
*读取图片 read_image(Image,'E:/1.jpg') *图像处理 decompose3(Image, ImageR, ImageG, ImageB) threshold (ImageG, Regions, 0, 183) connection (Regions, Connection) select_shape (Connection, SelectedRegions, 'area', 'and', 1987.72, 7500) read_ocr_class_mlp('Document_0-9_NoRej.omc',OCRHandle) do_ocr_multi_class_mlp(SelectedRegions,ImageG,OCRHandle, Class, Confidence)
2、使用HALCON导出C#代码
sce.cs代码为:
// // File generated by HDevelop for HALCON/DOTNET (C#) Version 12.0 // // This file is intended to be used with the HDevelopTemplate or // HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport { public HTuple hv_ExpDefaultWinHandle; // Main procedure private void action() { // Local iconic variables HObject ho_Image, ho_ImageR, ho_ImageG, ho_ImageB; HObject ho_Regions, ho_Connection, ho_SelectedRegions; // Local control variables HTuple hv_OCRHandle = null, hv_Class = null; HTuple hv_Confidence = null; // Initialize local and output iconic variables HOperatorSet.GenEmptyObj(out ho_Image); HOperatorSet.GenEmptyObj(out ho_ImageR); HOperatorSet.GenEmptyObj(out ho_ImageG); HOperatorSet.GenEmptyObj(out ho_ImageB); HOperatorSet.GenEmptyObj(out ho_Regions); HOperatorSet.GenEmptyObj(out ho_Connection); HOperatorSet.GenEmptyObj(out ho_SelectedRegions); //读取图片 ho_Image.Dispose(); HOperatorSet.ReadImage(out ho_Image, "E:/1.jpg"); //图像处理 ho_ImageR.Dispose();ho_ImageG.Dispose();ho_ImageB.Dispose(); HOperatorSet.Decompose3(ho_Image, out ho_ImageR, out ho_ImageG, out ho_ImageB ); ho_Regions.Dispose(); HOperatorSet.Threshold(ho_ImageG, out ho_Regions, 0, 183); ho_Connection.Dispose(); HOperatorSet.Connection(ho_Regions, out ho_Connection); ho_SelectedRegions.Dispose(); HOperatorSet.SelectShape(ho_Connection, out ho_SelectedRegions, "area", "and", 1987.72, 7500); HOperatorSet.ReadOcrClassMlp("Document_0-9_NoRej.omc", out hv_OCRHandle); HOperatorSet.DoOcrMultiClassMlp(ho_SelectedRegions, ho_ImageG, hv_OCRHandle, out hv_Class, out hv_Confidence); ho_Image.Dispose(); ho_ImageR.Dispose(); ho_ImageG.Dispose(); ho_ImageB.Dispose(); ho_Regions.Dispose(); ho_Connection.Dispose(); ho_SelectedRegions.Dispose(); } public void InitHalcon() { // Default settings used in HDevelop HOperatorSet.SetSystem("width", 512); HOperatorSet.SetSystem("height", 512); } public void RunHalcon(HTuple Window) { hv_ExpDefaultWinHandle = Window; action(); } }
3、C#调用HALCON
(1)新建一个C#窗体程序:Cha_Test。
(2)引用halcondotnet.dll和导出的sce.cs文件。并对sce.cs中的代码进行修改。
修改后的sce.cs代码:
// // File generated by HDevelop for HALCON/DOTNET (C#) Version 12.0 // // This file is intended to be used with the HDevelopTemplate or // HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport { public HTuple hv_ExpDefaultWinHandle; HObject ho_Image, ho_ImageR, ho_ImageG, ho_ImageB; HObject ho_Regions, ho_Connection, ho_SelectedRegions; // Local control variables HTuple hv_OCRHandle, hv_Confidence; public HTuple hv_Class; public void InitHalcon() { // Default settings used in HDevelop HOperatorSet.SetSystem("do_low_error", "false"); } public void ReadImage(HTuple Window, string ImagePath) { hv_ExpDefaultWinHandle = Window; // Initialize local and output iconic variables HOperatorSet.GenEmptyObj(out ho_Image); //读取图片 ho_Image.Dispose(); HOperatorSet.ReadImage(out ho_Image, ImagePath); HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle); } public void NumberRecognition() { HOperatorSet.GenEmptyObj(out ho_ImageR); HOperatorSet.GenEmptyObj(out ho_ImageG); HOperatorSet.GenEmptyObj(out ho_ImageB); HOperatorSet.GenEmptyObj(out ho_Regions); HOperatorSet.GenEmptyObj(out ho_Connection); HOperatorSet.GenEmptyObj(out ho_SelectedRegions); //图像处理 ho_ImageR.Dispose(); ho_ImageG.Dispose(); ho_ImageB.Dispose(); HOperatorSet.Decompose3(ho_Image, out ho_ImageR, out ho_ImageG, out ho_ImageB); ho_Regions.Dispose(); HOperatorSet.Threshold(ho_ImageG, out ho_Regions, 0, 183); ho_Connection.Dispose(); HOperatorSet.Connection(ho_Regions, out ho_Connection); ho_SelectedRegions.Dispose(); HOperatorSet.SelectShape(ho_Connection, out ho_SelectedRegions, "area", "and",1987.72, 7500); HOperatorSet.ReadOcrClassMlp("Document_0-9_NoRej.omc", out hv_OCRHandle); HOperatorSet.DoOcrMultiClassMlp(ho_SelectedRegions, ho_ImageG, hv_OCRHandle,out hv_Class, out hv_Confidence); ho_Image.Dispose(); ho_ImageR.Dispose(); ho_ImageG.Dispose(); ho_ImageB.Dispose(); ho_Regions.Dispose(); ho_Connection.Dispose(); ho_SelectedRegions.Dispose(); } }
(3)修改Form1.cs代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using HalconDotNet; //引用HALCON命名空间 namespace Cha_Test { public partial class Form1 : Form { HDevelopExport HD = new HDevelopExport();//增加代码 public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string ImagePath; OpenFileDialog filename = new OpenFileDialog(); //引用C#OpenFileDialog类 filename.Filter = "JPEG文件|*.jpg*|BMP文件|*.bmp*|TIFF文件|*.tiff*"; filename.RestoreDirectory = true; filename.FilterIndex = 1; if (filename.ShowDialog() == DialogResult.OK) { ImagePath = filename.FileName; HD.ReadImage(hWindowControl1.HalconWindow, ImagePath); } } private void button2_Click(object sender, EventArgs e) { HD.NumberRecognition(); textBox1.Text = HD.hv_Class.ToString(); } } }
4、运行结果
相关文章推荐
- C#中调用Matlab人工神经网络算法实现手写数字识别
- C#中调用Matlab人工神经网络算法实现手写数字识别
- C#调用DLL实现图像文字识别(OCR)
- halcon与C#混合编程(三)数字识别
- Python实现深度学习之-神经网络识别手写数字(更新中,更新日期:2017-07-12)
- VS 2008 实现在C#中调用C++编写的 coin 3d 三位显示部分
- 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试
- 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试
- 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试
- 实现验证码图像文字的识别(C#调用DLL)
- C# Winform应用程序调用Microsoft RDP client control实现远程连接(VS2013)
- 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试
- C#调用DLL实现图像文字识别(OCR)
- c#实现识别图片上的验证码数字
- halcon与C#混合编程(三)数字识别
- vs2015 C#实现usb虚拟串口自动识别和重新连接
- SQL Server 12存储过程及在VS2015 C#调用自己的存储过程调用过程(详解)
- C#(VS2010)调用HALCON12
- VS2013调用armadillo使用KNN算法实现0-9数字分类
- windows 10(64位)下实现vs20120C++调用matlab r2014a编写的m文件生成的.dll,.lib,.h文件