开启左侧

c#下halcon配置教程

[复制链接]
zwjob 发表于 2017-8-7 19:15:48 | 显示全部楼层 |阅读模式
1.在halcon中写入算子,实现函数过程
比如:
  1. read_image(Image,’D:/MyFile/halcon/数字识别/1.jpg’)
  2. decompose3(Image, ImageR, ImageG, ImageB)
  3. threshold (ImageG, Regions, 0, 183)
  4. connection (Regions, Connection)
  5. select_shape (Connection, SelectedRegions, ‘area’, ‘and’, 1987.72, 7500)
  6. read_ocr_class_mlp(‘Document_0-9.omc’,OCRHandle)
  7. do_ocr_multi_class_mlp(SelectedRegions,ImageG,OCRHandle, Class, Confidence)
复制代码
2.通过halcon的IDE开发环境,导出C#代码
3.利用vs2013创建一个C#窗体程序,加一个button。
4.将HDevelop安装目录下的目录复制到刚创建的C#窗体程序目录下
比方:我的C#project名字叫Hello,我的HDevelop安装在C:\Program Files\MVTec中。
我就把C:\Program Files\MVTec\Halcon\bin目录复制到Hello.sln所在位置的同一目录下。
5.在C#project中,对“解决方式资源管理器” 的 “引用” 右击,选择 “增加引用” 。点击“浏览”,选择刚才加进C#project的 “bin” 目录,接着选择“dotnet35”目录。最后选择“halcondotnet.dll”文件。点击”增加“。

6.在C#project中,选择“视图”。选择“工具箱”,在“工具箱“中右击,选择”选择项“,点击”浏览“。选择刚才加进C#project的 “bin” 目录,接着选择“dotnet35”目录。最后选择“halcondotnet.dll”文件。
点击”打开“。
7.将第二步导出的c#代码中生成的类,增加”Program.cs“文件里,例如以下
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using System.Windows.Forms;
  6. using HalconDotNet;
  7. namespace Hello
  8. {
  9. public partial class HDevelopExport
  10. {
  11.     public HDevelopExport()    {        // Default settings used in HDevelop         HOperatorSet.SetSystem("do_low_error", "false");        action();    }    // Main procedure     public void action()    {        // Local iconic variables         HObject ho_Image;        // Local control variables         HTuple hv_Width, hv_Height, hv_WindowHandle;        // Initialize local and output iconic variables         HOperatorSet.GenEmptyObj(out ho_Image);        if (HDevWindowStack.IsOpen())        {            HOperatorSet.CloseWindow(HDevWindowStack.Pop());        }        HOperatorSet.ReadImage(out ho_Image, "1.jpg");        HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);        HOperatorSet.SetWindowAttr("background_color", "black");        HOperatorSet.OpenWindow(0, 0, hv_Width, hv_Height, 0, "", "", out hv_WindowHandle);        HDevWindowStack.Push(hv_WindowHandle);        if (HDevWindowStack.IsOpen())        {            HOperatorSet.DispObj(ho_Image, HDevWindowStack.GetActive());        }        ho_Image.Dispose();    }}static class Program{    /// <summary>    /// 应用程序的主入口点。    /// </summary>    [STAThread]    static void Main()    {        Application.EnableVisualStyles();        Application.SetCompatibleTextRenderingDefault(false);        Application.Run(new Form1());    }}
  12. }
复制代码

8.在C#project的”Form1.cs“文件,button响应事件中增加代码。例如以下:
  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.Threading.Tasks;
  9. using System.Windows.Forms;
  10. namespace Hello
  11. {
  12. public partial class Form1 : Form
  13. {
  14. public Form1()
  15. {
  16. InitializeComponent();
  17. }
  18.     private void button1_Click(object sender, EventArgs e)    {        HDevelopExport HD = new HDevelopExport();        HD.action();    }}
  19. }
复制代码

9.在C#project”Debug“目录中增加”halcon.dll“、”halcondotnet.dll“、”license.dat“文件。

10.移植到还有一台机器中的时候,要在还有一台机器路径C:\Program Files\MVTec\Halcon\下增加本台机器安装的HDevelop的help目录。

比如:我的机器C:\Program Files\MVTec\HALCON-10.0\help
我在还有一台机器下也按着这个路径建立同样目录的名字,把我的机器C:\Program Files\MVTec\HALCON-10.0\help下的所以文件复制到还有一台机器中。
11.配置完毕。执行。。。。

vc9181 发表于 2018-1-6 14:47:34 | 显示全部楼层
不错,学习了:loveliness:
ZHP6666 发表于 2018-3-5 11:16:31 | 显示全部楼层
:):)学习了谢谢分享
aositeluofu 发表于 2019-7-1 22:26:57 | 显示全部楼层
谢谢分享了
toyd408 发表于 2021-4-11 16:37:41 | 显示全部楼层
多谢,学习中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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