C#调用halcon.dll-图像读取、特征筛选

第一步:通过桌面找到halcon的文件路径

第二步:在halcon文件路径下找到halcon.dll文件并复制粘贴到桌面文件(命名自拟)

第三步:返回上一级找到名为dotnet32的文件夹

第四步:在dotnet35文件里面将所有文件复制粘贴第二步创建的文件夹里面

第五步:在Visual Studio里面创建一个窗体类项目(命名自拟)

第六步:将第二步创建文件夹里的halcon.dll文件拖入Visual Studio工具箱里面

第七步:将halcondotnet.dll文件进行引用

第八步:证明C#halcon联合开发成功,创建三个HWindowControl类以及按钮和文框,修改窗体属性进行验证

第九步:结合代码(如下)进行验证

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 第一个联合项目练习

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

            // comboBoxs--->一个个加了三个选项

            comboBox1.Items.Add("area");

            comboBox1.Items.Add("circularity");

            comboBox1.Items.Add("rectangularity");

            //选择首个选项

            comboBox1.SelectedIndex = 0;

        }

        HObject ho_image;

        HTuple MinGray;

        HTuple MaxGray;

        HObject Region;

        HTuple width, height;

        private void button1_Click(object sender, EventArgs e)

        {

            OpenFileDialog openFileDialog = new OpenFileDialog();

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

            {

                HOperatorSet.ReadImage(out ho_image, openFileDialog.FileName);

            }

            HTuple width, height;

            //获取图片的宽高

            HOperatorSet.GetImageSize(ho_image, out width, out height);

            //设置显示范围

            //HWindowControl.HalconWindow -->控件的句柄 设置显示范围

            HOperatorSet.SetPart(hWindowControl1.HalconWindow, 0, 0, (height - 1), (width - 1));

            //显示

            HOperatorSet.DispObj(ho_image, hWindowControl1.HalconWindow);

        }

        private void button2_Click(object sender, EventArgs e)

        {

            hWindowControl2.HalconWindow.ClearWindow();

            if (ho_image == null)

            {

                button1_Click(null, null);

            }

            //设置颜色

            HOperatorSet.SetColor(hWindowControl2.HalconWindow, "white");

            //int.Parse(string)字符串类型转换成int类型

            MaxGray = int.Parse(textBox1.Text);

            MinGray = int.Parse(textBox2.Text);

            //阈值分割

            HOperatorSet.Threshold(ho_image, out Region, MinGray, MaxGray);

            HOperatorSet.GetImageSize (ho_image, out width,out height);

            //HWindowControl.HalconWindow --->窗体句柄 设置显示范围

            HOperatorSet.SetPart(hWindowControl2.HalconWindow, 0, 0, (height - 1), (width - 1));

            //显示

            HOperatorSet.DispObj(Region, hWindowControl2.HalconWindow);

        }

        private void button3_Click(object sender, EventArgs e)

        {

            HOperatorSet.SetColor(hWindowControl3.HalconWindow, "green");

            HTuple width, height;

            //获得图片的宽高

            HOperatorSet.GetImageSize(ho_image, out width, out height);

            //设置显示范围

            //HWindowControl.HalconWindow -->控件的句柄  设置显示范围

            HOperatorSet.SetPart(hWindowControl3.HalconWindow, 0, 0, (height - 1), (width - 1));

            //打散

            HObject ConnectionRegion;

            HOperatorSet.Connection(Region, out ConnectionRegion);

            //特征筛选

            HObject SelectRegion;

            //HOperatorSet.SelectShape(ConnectionRegion,out SelectRegion, "area","and", 3227.85, 7897.33);

            HOperatorSet.SelectShape(ConnectionRegion, out SelectRegion, comboBox1.SelectedItem.ToString(), "and", Double.Parse(textBox4.Text), Double.Parse(textBox3.Text));

            //显示

            HOperatorSet.DispObj(ho_image, hWindowControl3.HalconWindow);

            HOperatorSet.DispObj(SelectRegion, hWindowControl3.HalconWindow);

        }

        private void button4_Click(object sender, EventArgs e)

        {

            OpenFileDialog openFileDialog = new OpenFileDialog();

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

            {

                HOperatorSet.ReadImage(out ho_image, openFileDialog.FileName);

            }

        }

        private void button5_Click(object sender, EventArgs e)

        {

            MessageBox.Show(comboBox1.SelectedItem.ToString());

        }

    }

}

### 回答1: Halcon .dll是用于Halcon图像处理库的动态链接库,用于在Windows操作系统上调用Halcon函数和实现相关功能。在使用Halcon .dll之前,需要了解一些相关的说明和文档。 Halcon .dll的说明文档通常包括以下几个方面的内容: 1. 引用和安装:说明如何在开发环境中引用和安装Halcon .dll,包括将库文件放置在正确的路径并设置相关的环境变量。 2. 函数和功能:列举了Halcon .dll所包含的函数和对应的功能说明,以及参数的详细说明。这帮助开发者理解如何正确调用函数以实现需要的图像处理功能。 3. 数据类型和结构:介绍了Halcon .dll中使用的数据类型和结构,包括图像、坐标系、点和区域等。这有助于开发者在使用函数时正确传递和操作数据。 4. 错误处理:说明了Halcon .dll中的错误代码和异常处理机制,包括如何检测和处理错误,以及如何获取详细的错误信息和调试信息。 5. 示例代码和应用案例:提供了一些示例代码和应用案例,展示了如何使用Halcon .dll来完成一些常见的图像处理任务,如图像检测、测量和识别等。 总结来说,Halcon .dll的说明文档是帮助开发者正确使用该库的重要指南,包含了库的安装和引用、函数和功能的说明、数据类型和结构的介绍、错误处理机制以及示例代码和应用案例等内容。开发者可以根据文档中提供的信息和示例来快速上手并实现自己的图像处理需求。 ### 回答2: Halcon .dll是一种动态链接库(Dynamic Link Library),它包含了Halcon图像处理的相关函数和工具。使用Halcon .dll可以实现对图像的处理、分析和识别等功能。 Halcon是一种计算机视觉库,具有广泛的应用领域,如工业自动化、医疗影像、安防监控等。通过使用Halcon .dll,我们可以将Halcon的功能嵌入到我们自己的程序中,以便更方便地调用和使用。 Halcon .dll说明文档提供了关于如何使用Halcon .dll的详细信息和指南。它通常会包含以下内容: 1. 函数列表:说明了Halcon .dll中包含的各种函数及其功能。我们可以根据这些函数的说明来选择合适的函数来处理我们的图像。 2. 参数说明:对于每个函数,说明文档会列出需要传递的参数及其含义。这些参数可能包括图像路径图像的尺寸、需要进行的处理操作等。 3. 示例代码:说明文档中通常会提供一些示例代码,以帮助我们快速上手并理解如何使用Halcon .dll来实现图像处理。这些示例代码可以作为我们开发自己程序的参考。 4. 返回值说明:说明文档也会列出每个函数的返回值及其含义。这些返回值可以帮助我们判断函数是否执行成功,并根据返回值来处理后续的逻辑。 通过仔细阅读和理解Halcon .dll说明文档,我们可以掌握Halcon .dll的使用方法,从而在我们自己的项目中实现各种图像处理功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值