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);
}
}
}
}