Halcon联合C#编程配置及简单示例程序

tech2024-07-31  53

 

所用软件为:Halcon 18.05 + Visual studio 2015


1.在halcon中写完代码后导出,选择导出语言为C#

 

2.新建一个C#Windows窗体应用项目,并配置,配置的过程如下:

2.1添加引用

添加引用的方法是:在Visual Studio 中点击菜单“项目->添加引用”,在弹出的对话框中选择“.NET”选项卡,在其中找到需要添加的命名空间,选择并确定。

 

删除引用的方法是:在Visual Studio 中点击菜单“视图->解决方案资源管理器”,在其中展开“引用”文件夹,在欲删除的引用上右击鼠标,点击“移除”即可。

2.2.添加命名空间

添加:using HalconDotNet;相当于C++中的include


一个简单的例子

 

halcon代码:

read_image (Timg, 'D:/研二/八月任务/图片/timg.jpg')

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

rgb1_to_gray (Timg, GrayImage)

threshold (GrayImage, Regions, 24, 100)

dev_display (Regions)

C#代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using HalconDotNet;

 

namespace ShowPicture9._2

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        //定义变量

        HObject ho_Timg, ho_GrayImage, ho_Regions;

        HTuple hv_WindowHandle = new HTuple();

        #region 处理显示图片

        private void button2_Click(object sender, EventArgs e)

        {

            //打开窗口

            //需要注意两个容易出错的地方:openWindow和dev_set_part

            //第五个参数不能写0(导出来的时候是0)打开的大小和控件不一致需解决(前四个参数)

            //HOperatorSet.OpenWindow(0, 0, 512, 512, 0, "visible", "", out hv_WindowHandle);

            //hWindowControl1.Width, hWindowControl1.Height, hWindowControl1.HalconWindow控件宽、高和句柄

            HOperatorSet.OpenWindow(0, 0, hWindowControl1.Width, hWindowControl1.Height, hWindowControl1.HalconWindow, "visible", "", out hv_WindowHandle);

            HDevWindowStack.Push(hv_WindowHandle);

            //转灰度

            ho_GrayImage.Dispose();

            HOperatorSet.Rgb1ToGray(ho_Timg, out ho_GrayImage);

            //灰度直方图处理选择感兴趣区域

            ho_Regions.Dispose();

            HOperatorSet.Threshold(ho_GrayImage, out ho_Regions, 24, 100);

            //如果窗口打开,则显示

            if (HDevWindowStack.IsOpen())

            {

                HOperatorSet.DispObj(ho_Regions, HDevWindowStack.GetActive());

            }

        }

        #endregion

        #region  从文件夹中采集图片

        private void button1_Click(object sender, EventArgs e)

        {

            string ImagePath;

            //OpenFileDialog openFileDialog1=new OpenFileDialog();

            //设置打开文件的格式

            openFileDialog1.Filter = "JPEG文件|*.jpg*|BMP文件|*.bmp*";

            //打开路径回复至之前

            openFileDialog1.RestoreDirectory = true;

            // Initialize local and output iconic variables

            HOperatorSet.GenEmptyObj(out ho_Timg);

            HOperatorSet.GenEmptyObj(out ho_GrayImage);

            HOperatorSet.GenEmptyObj(out ho_Regions);

            //清空图像

            ho_Timg.Dispose();

 

            //采集图片中文件的选择

            //弹出【文件打开】对话框,如果用户操作时点击【OK】的话,就执行此条件分支内的代码

            if (openFileDialog1.ShowDialog() == DialogResult.OK)

            {

                //读取选中的图片

                ImagePath = openFileDialog1.FileName;

                HOperatorSet.ReadImage(out ho_Timg, ImagePath);

 

            }

        }

        #endregion

    }

}

界面:

添加的控件有四个,一个halcon窗口,两个button控件,一个对话框控件openFileDialog

(添加Halcon的控件如halcon窗口控件需要按照下面最图片操作)

注意:添加控件时,要导入halcondotnet.dll

 

 


3.从别的地方看到的一些知识:

From: 公众号  工控Zero

3.1.Halcon二次开发的两种方式

① 使用C#的语法方式逐句改写Halcon代码

优点:各种变量的类型清楚,可读性强,改写后代码行数几乎不会增加多少。

缺点:改写工作量大,容易出错,如果Halcon代码量大,后期将难以更新维护。

② 封装成函数导出 (推荐)

优点:操作简单,对开发人员编程能力要求低,工作量少,且便于维护。

缺点:Halcon函数导出的代码可读性极低,一旦丢失原Halcon文件,二次开发程序将难以更新维护。

建议:主二副一。

3.2.如果安装Halcon时不是安装在默认路径,可能需要将halcon.dll文件复制到当前项目的输出路径下,halcon.dll的路径为:C:\Program Files\MVTec\HALCON-12.0\bin\x64-win64\halcon.dll

3.3.C#中Halcon部分代码的调试不太方便,但也不是毫无办法。

① 调试时HTuple类型的变量可以直接查看值。

② Image、Region、Xld的变量一般只能通过“保存文件到本地”来查看变量情况。

HOperatorSet.WriteImage(image, "jpg", 0x000000, "1.jpg");//彩色图像

HOperatorSet.WriteImage(image, "jpg", 0, "1.jpg");//灰度图像

HOperatorSet.WriteRegion(ho_RegionUnion, "1.hobj");//后缀用.reg也行

HOperatorSet.WriteContourXldDxf(contours,"1.dxf");

③ 安装Halcon的变量检查插件到Visual Studio。该安装文件所在的默认路径为:

C:\Program Files\MVTec\HALCON-12.0\misc\HALCON_Variable_Inspect.vsix

 

最新回复(0)