示例:数字识别
要识别的图片:
下载图像:
Image.7z
(58.64 KB, 下载次数: 6)
halcon源码:
- *读取图片
- read_image(Image,'D:/MyFile/halcon/数字识别/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.omc',OCRHandle)
- do_ocr_multi_class_mlp(SelectedRegions,ImageG,OCRHandle, Class, Confidence)
复制代码
halcon导出的C#代码:
- //
- // File generated by HDevelop for HALCON/DOTNET (C#) Version 10.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, hv_Class, hv_Confidence;
-
- // 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, "D:/MyFile/halcon/数字识别/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.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("do_low_error", "false");
- }
-
- public void RunHalcon(HTuple Window)
- {
- hv_ExpDefaultWinHandle = Window;
- action();
- }
-
- }
复制代码
C#工程:
- 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;
-
- namespace NumericalRecognition
- {
- public partial class FormMain : Form
- {
- //增加代码:
- HDevelopExport HD = new HDevelopExport();
- string ImagePath;
- public FormMain()
- {
- InitializeComponent();
- btnRecognitionNumber.Enabled = false;
- }
-
- private void btnOpenImage_Click(object sender, EventArgs e)
- {
- openFileDialog1.Filter = "JPEG文件|*.jpg*|BMP文件|*.bmp*|TIFF文件|*.tiff*";
- openFileDialog1.RestoreDirectory = true;
- openFileDialog1.FilterIndex = 1;
- if (openFileDialog1.ShowDialog() == DialogResult.OK)
- {
- ImagePath = openFileDialog1.FileName;
- HD.ReadImage(hWindowControl1.HalconWindow, ImagePath);
-
- btnRecognitionNumber.Enabled = true;
- }
- }
-
- private void btnRecognitionNumber_Click(object sender, EventArgs e)
- {
- HD.NumberRecognition();
- labNumber.Text = HD.hv_Class.ToString();
- btnRecognitionNumber.Enabled = false;
- }
- }
-
- //halcon导出的类
- 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.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();
- }
- }
- }
复制代码
运行结果:
转载自:https://www.cnblogs.com/hanzhaox ... /02/07/2908924.html |