首页 > 学院 > 开发设计 > 正文

C#(VS10)调用HALCON12----实现数字识别

2019-11-06 08:41:36
字体:
来源:转载
供稿:网友

C#(VS10)调用HALCON12----实现数字识别

参考自: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、运行结果


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表