设置首页收藏本站
开启左侧

halcon与C#混合编程(三)数字识别

[复制链接]
绝地武士 发表于 2016-7-30 00:18:01 | 显示全部楼层 |阅读模式
示例:数字识别
要识别的图片:
1.JPG
下载图像:
Image.7z (58.64 KB, 下载次数: 6)

halcon源码:
  1. *读取图片
  2. read_image(Image,'D:/MyFile/halcon/数字识别/1.jpg')

  3. *图像处理
  4. decompose3(Image, ImageR, ImageG, ImageB)
  5. threshold (ImageG, Regions, 0, 183)
  6. connection (Regions, Connection)

  7. select_shape (Connection, SelectedRegions, 'area', 'and', 1987.72, 7500)

  8. read_ocr_class_mlp('Document_0-9.omc',OCRHandle)
  9. do_ocr_multi_class_mlp(SelectedRegions,ImageG,OCRHandle, Class, Confidence)
复制代码


halcon导出的C#代码:
  1. //
  2. //  File generated by HDevelop for HALCON/DOTNET (C#) Version 10.0
  3. //
  4. //  This file is intended to be used with the HDevelopTemplate or
  5. //  HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c#

  6. using System;
  7. using HalconDotNet;

  8. public partial class HDevelopExport
  9. {
  10. public HTuple hv_ExpDefaultWinHandle;

  11. // Main procedure
  12. private void action()
  13. {

  14.      // Local iconic variables
  15.   
  16.      HObject ho_Image, ho_ImageR, ho_ImageG, ho_ImageB;
  17.      HObject ho_Regions, ho_Connection, ho_SelectedRegions;


  18.      // Local control variables
  19.   
  20.      HTuple hv_OCRHandle, hv_Class, hv_Confidence;
  21.   
  22.      // Initialize local and output iconic variables
  23.      HOperatorSet.GenEmptyObj(out ho_Image);
  24.      HOperatorSet.GenEmptyObj(out ho_ImageR);
  25.      HOperatorSet.GenEmptyObj(out ho_ImageG);
  26.      HOperatorSet.GenEmptyObj(out ho_ImageB);
  27.      HOperatorSet.GenEmptyObj(out ho_Regions);
  28.      HOperatorSet.GenEmptyObj(out ho_Connection);
  29.      HOperatorSet.GenEmptyObj(out ho_SelectedRegions);
  30.   
  31.      //读取图片
  32.      ho_Image.Dispose();
  33.      HOperatorSet.ReadImage(out ho_Image, "D:/MyFile/halcon/数字识别/1.jpg");
  34.   
  35.      //图像处理
  36.      ho_ImageR.Dispose();
  37.      ho_ImageG.Dispose();
  38.      ho_ImageB.Dispose();
  39.      HOperatorSet.Decompose3(ho_Image, out ho_ImageR, out ho_ImageG, out ho_ImageB);
  40.      ho_Regions.Dispose();
  41.      HOperatorSet.Threshold(ho_ImageG, out ho_Regions, 0, 183);
  42.      ho_Connection.Dispose();
  43.      HOperatorSet.Connection(ho_Regions, out ho_Connection);
  44.   
  45.      ho_SelectedRegions.Dispose();
  46.      HOperatorSet.SelectShape(ho_Connection, out ho_SelectedRegions, "area", "and", 1987.72, 7500);
  47.   
  48.      HOperatorSet.ReadOcrClassMlp("Document_0-9.omc", out hv_OCRHandle);
  49.      HOperatorSet.DoOcrMultiClassMlp(ho_SelectedRegions, ho_ImageG, hv_OCRHandle, out hv_Class, out hv_Confidence);

  50.      ho_Image.Dispose();
  51.      ho_ImageR.Dispose();
  52.      ho_ImageG.Dispose();
  53.      ho_ImageB.Dispose();
  54.      ho_Regions.Dispose();
  55.      ho_Connection.Dispose();
  56.      ho_SelectedRegions.Dispose();
  57.   
  58.    }
  59.   
  60.    public void InitHalcon()
  61.    {
  62.      // Default settings used in HDevelop
  63.      HOperatorSet.SetSystem("do_low_error", "false");
  64.    }

  65.    public void RunHalcon(HTuple Window)
  66.    {
  67.      hv_ExpDefaultWinHandle = Window;
  68.      action();
  69.    }
  70.   
  71. }
复制代码

C#工程:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using HalconDotNet;

  10. namespace NumericalRecognition
  11. {
  12.      public partial class FormMain : Form
  13.      {
  14.          //增加代码:
  15.          HDevelopExport HD = new HDevelopExport();
  16.          string ImagePath;  
  17.          public FormMain()
  18.          {
  19.              InitializeComponent();
  20.              btnRecognitionNumber.Enabled = false;
  21.          }
  22.   
  23.          private void btnOpenImage_Click(object sender, EventArgs e)
  24.          {
  25.              openFileDialog1.Filter = "JPEG文件|*.jpg*|BMP文件|*.bmp*|TIFF文件|*.tiff*";
  26.              openFileDialog1.RestoreDirectory = true;
  27.              openFileDialog1.FilterIndex = 1;
  28.              if (openFileDialog1.ShowDialog() == DialogResult.OK)
  29.              {
  30.                  ImagePath = openFileDialog1.FileName;
  31.                  HD.ReadImage(hWindowControl1.HalconWindow, ImagePath);
  32.    
  33.                  btnRecognitionNumber.Enabled = true;   
  34.              }   
  35.          }
  36.   
  37.          private void btnRecognitionNumber_Click(object sender, EventArgs e)
  38.          {
  39.              HD.NumberRecognition();
  40.              labNumber.Text = HD.hv_Class.ToString();
  41.              btnRecognitionNumber.Enabled = false;
  42.          }
  43.      }
  44.   
  45.      //halcon导出的类
  46.      public partial class HDevelopExport
  47.      {
  48.          public HTuple hv_ExpDefaultWinHandle;  
  49.          HObject ho_Image, ho_ImageR, ho_ImageG, ho_ImageB;
  50.          HObject ho_Regions, ho_Connection, ho_SelectedRegions;
  51.   
  52.          // Local control variables
  53.          HTuple hv_OCRHandle,  hv_Confidence;
  54.          public HTuple hv_Class;
  55.   
  56.          public void InitHalcon()
  57.          {
  58.              // Default settings used in HDevelop
  59.              HOperatorSet.SetSystem("do_low_error", "false");
  60.          }
  61.   
  62.          public void ReadImage(HTuple Window,string ImagePath)
  63.          {
  64.              hv_ExpDefaultWinHandle = Window;
  65.   
  66.              // Initialize local and output iconic variables
  67.              HOperatorSet.GenEmptyObj(out ho_Image);
  68.             
  69.              //读取图片
  70.              ho_Image.Dispose();
  71.              HOperatorSet.ReadImage(out ho_Image, ImagePath);
  72.              HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle);
  73.          }
  74.   
  75.          public void NumberRecognition()
  76.          {
  77.              HOperatorSet.GenEmptyObj(out ho_ImageR);
  78.              HOperatorSet.GenEmptyObj(out ho_ImageG);
  79.              HOperatorSet.GenEmptyObj(out ho_ImageB);
  80.              HOperatorSet.GenEmptyObj(out ho_Regions);
  81.              HOperatorSet.GenEmptyObj(out ho_Connection);
  82.              HOperatorSet.GenEmptyObj(out ho_SelectedRegions);
  83.              //图像处理
  84.              ho_ImageR.Dispose();
  85.              ho_ImageG.Dispose();
  86.              ho_ImageB.Dispose();
  87.              HOperatorSet.Decompose3(ho_Image, out ho_ImageR, out ho_ImageG, out ho_ImageB);
  88.              ho_Regions.Dispose();
  89.              HOperatorSet.Threshold(ho_ImageG, out ho_Regions, 0, 183);
  90.              ho_Connection.Dispose();
  91.              HOperatorSet.Connection(ho_Regions, out ho_Connection);
  92.   
  93.              ho_SelectedRegions.Dispose();
  94.              HOperatorSet.SelectShape(ho_Connection, out ho_SelectedRegions, "area", "and",1987.72, 7500);
  95.   
  96.              HOperatorSet.ReadOcrClassMlp("Document_0-9.omc", out hv_OCRHandle);
  97.              HOperatorSet.DoOcrMultiClassMlp(ho_SelectedRegions, ho_ImageG, hv_OCRHandle,out hv_Class, out hv_Confidence);
  98.             
  99.              ho_Image.Dispose();
  100.              ho_ImageR.Dispose();
  101.              ho_ImageG.Dispose();
  102.              ho_ImageB.Dispose();
  103.              ho_Regions.Dispose();
  104.              ho_Connection.Dispose();
  105.              ho_SelectedRegions.Dispose();  
  106.          }
  107.      }
  108. }
复制代码

运行结果:
2.JPG 3.JPG
转载自:https://www.cnblogs.com/hanzhaox ... /02/07/2908924.html
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
934554314 发表于 2016-8-7 11:28:51 | 显示全部楼层
项目很好,可惜,,,代码非常不完整啊,
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
songyoufang 发表于 2017-11-13 14:22:42 | 显示全部楼层

项目很好,可惜,,,代码非常不完整啊,
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
Arima 发表于 2021-5-23 16:44:28 | 显示全部楼层
项目很好,可惜,,,代码非常不完整啊,

楼主只引用,不修复。。。呵呵。。。
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
onboy9 发表于 2021-6-29 18:32:33 | 显示全部楼层
934554314 发表于 2016-8-7 11:28
项目很好,可惜,,,代码非常不完整啊,

楼主很厉害自己做框架
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
cgsn 发表于 2023-2-20 16:53:20 | 显示全部楼层
剛學習數字圖像處理,感覺好複雜,需要多練習!
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表