C#调用halcon dll的过程,并且写一个测试程序证明C#halcon联合开发成功

1.C#调用halcon dll的过程

①首先进入halcon文件的bin目录下的x64-win64找到“halcon.dll”这个文件。

 ②在halcon文件的bin目录下的dotnet35这个路径下找到矩形框框出的这些文件。

③ 打开Visual Studio 2022创建一个Windows窗体应用。

④ 将第一,第二步选择的文件全部放在Visual Studio 2022创建的Windows窗体应用文件夹的Debug路径下。

⑤点开我们创建的窗体应用,找到文件的名称右击,选择属性,将"首选32位"这个选项取消勾选

⑥找到引用右击选择“添加引用”将图片中的文件添加至引用中。

 ⑦将图片中选择的文件拖拽至工具箱即可。

出现以上两个控件你就成功啦! 

2.写一个测试程序证明C#halcon联合开发成功

通过工具箱中的一些控件创建一个窗体界面。

通过C#编写代码实现输入灰度值的最小值和最大值选择图片进行阈值分割、特征筛选、打散等操作,最终得到处理后的图片。

using HalconDotNet;
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;

namespace 第一个联合项目
{

    public partial class BlobForm : Form
    {
        public BlobForm()
        {
            InitializeComponent();


            // comboBoxs--->一个个加了三个选项
            comboBox_feature.Items.Add("area");
            comboBox_feature.Items.Add("circularity");
            comboBox_feature.Items.Add("rectangularity");
            //选择首个选项
            comboBox_feature.SelectedIndex = 0;
        }

        HObject ho_image;
        private void button_readImage_Click(object sender, EventArgs e)
        {


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

            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(hWindowControl_yuanshi.HalconWindow, 0, 0, (height - 1), (width - 1));

            //阈值分割
            HObject Region;
            HOperatorSet.Threshold(ho_image,out Region,0,50);
            //打散
            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, comboBox_feature.SelectedItem.ToString(), "and",Double.Parse(textBox_Min.Text), Double.Parse(textBox_Max.Text));
           
           //显示
           HOperatorSet.DispObj(ho_image, hWindowControl_yuanshi.HalconWindow);
            HOperatorSet.DispObj(SelectRegion, hWindowControl_yuanshi.HalconWindow);

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //获得comboBox下拉选项
            MessageBox.Show(comboBox_feature.SelectedItem.ToString());
        }

        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
           
            if(openFileDialog.ShowDialog()==DialogResult.OK) 
            {
                MessageBox.Show(openFileDialog.FileName);
            }
        }
    }
}

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#调用Halcon引擎可以通过添加引用halcondotnet.dll和hdevenginedonet.dll来实现。以下是两种调用Halcon引擎的方法: 1. 在C#中使用Halcon引擎调用Halcon程序 首先,需要在Halcon中导出C#文件,然后在C#调用。具体步骤如下: - 在Halcon中打开需要调用的程序。 - 选择“文件”->“导出”->“导出C#文件”。 - 在C#中添加对halcondotnet.dll和hdevenginedonet.dll的引用。 - 在C#中创建Halcon引擎实例并调用Halcon程序。 以下是一个示例代码: ```csharp using HalconDotNet; class Program { static void Main(string[] args) { // 创建Halcon引擎实例 HDevEngine engine = new HDevEngine(); engine.SetScriptPath("path/to/halcon/program"); // 调用Halcon程序 engine.ExecuteScript("halcon_program.cs"); } } ``` 2. 在C#中使用Halcon引擎调用.hdev下本地函数或者.hdvp外部函数 在C#中使用Halcon引擎调用.hdev下本地函数或者.hdvp外部函数也是通过添加引用halcondotnet.dll和hdevenginedonet.dll来实现。具体步骤如下: - 在C#中添加对halcondotnet.dll和hdevenginedonet.dll的引用。 - 在C#中创建Halcon引擎实例并调用.hdev下本地函数或者.hdvp外部函数。 以下是一个示例代码: ```csharp using HalconDotNet; class Program { static void Main(string[] args) { // 创建Halcon引擎实例 HDevEngine engine = new HDevEngine(); // 调用.hdev下本地函数 engine.CallProcedure("local_procedure"); // 调用.hdvp外部函数 engine.CallExternalProcedure("external_procedure", "path/to/external/procedure.hdvp"); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值