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

 

所用软件为: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

 

  • 7
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
HalconC#可以通过Halcon/.NET接口进行联合编程Halcon/.NET接口是一个提供给C#开发人员的软件开发工具包,它允许您在C#中调用Halcon的图像处理功能。 要进行HalconC#联合编程,您需要完成以下步骤: 1. 安装HalconHalcon/.NET接口:首先,您需要安装Halcon的开发版,并确保在安装过程中选择安装Halcon/.NET接口。 2. 创建C#项目:在Visual Studio或其他C#开发环境中创建一个新的C#项目。 3. 引用Halcon/.NET接口:在C#项目中,右键点击“引用”并选择“添加引用”。浏览到Halcon安装目录下的"Halcon.NET.dll"文件,并添加该引用。 4. 编写C#代码:在C#项目中,您可以使用Halcon/.NET接口提供的类和方法来调用Halcon的图像处理功能。例如,您可以使用HImage类来加载和处理图像,使用HOperatorSet类来调用Halcon的算法函数。 以下是一个简单示例代码,演示如何在C#中使用Halcon/.NET接口加载和显示图像: ```csharp using HalconDotNet; class Program { static void Main(string[] args) { // 初始化Halcon HOperatorSet.SetSystem("border_shape_models", "true"); // 创建Halcon图像对象 HImage image = new HImage(); // 加载图像 image.ReadImage("path/to/your/image.jpg"); // 显示图像 HWindow window = new HWindow(); window.SetPart(0, 0, -1, -1); window.DispImage(image); // 等待用户按下任意键退出 Console.WriteLine("Press any key to exit..."); Console.ReadKey(); // 释放资源 image.Dispose(); window.Dispose(); } } ``` 通过这种方式,您可以在C#中使用Halcon的强大图像处理功能,并与其他C#代码进行集成和扩展。请参考Halcon/.NET接口的文档和示例代码,以了解更多关于HalconC#联合编程的细节。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值