第一步:通过桌面找到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());
}
}
}