1. 创建halcon项目 ->
2.测试连接 ->
3. 在halcon中打开摄像头成功 ->
4. 插入代码 ->
5. 导出为.cs文件
6. 创建VS项目 ->
7.将action部分代码嵌入winform ->
8. 编写代码 ->
// 导入HalconDotNet命名空间,这是用于Halcon图像处理的.NET封装库
using HalconDotNet;
// 导入System命名空间,这是.NET基础类库
using System;
// 导入System.Collections.Generic命名空间,用于使用泛型集合
using System.Collections.Generic;
// 导入System.ComponentModel命名空间,用于实现组件和自定义控件的运行时和设计时行为
using System.Data;
// 导入System.Drawing命名空间,用于基本的图形功能
using System.Drawing;
// 导入System.Linq命名空间,用于提供查询功能
using System.Text;
// 导入System.Threading.Tasks命名空间,用于支持异步编程
using System.Windows.Forms;
// 导入System.Threading命名空间,用于多线程操作
using System.Threading;
// 导入System.Net.Mime.MediaTypeNames静态类,用于获取多媒体类型名称
using static System.Net.Mime.MediaTypeNames;
// 定义一个命名空间begin
namespace begin
{
// 定义一个名为Form1的公共部分类,它继承自Form类
public partial class Form1 : Form
{
// 声明局部图标变量ho_Image,用于存储图像对象,初始值为null
HObject ho_Image = null;
// 声明局部控制变量hv_AcqHandle,用于图像采集句柄,初始值为null
HTuple hv_AcqHandle = null;
// 声明一个Thread类型的变量show,用于控制显示图像的线程
Thread show;
// Form1的构造函数
public Form1()
{
// 调用InitializeComponent方法,由设计器生成,用于初始化窗体组件
InitializeComponent();
}
// button1的点击事件处理方法
private void button1_Click(object sender, EventArgs e)
{
// 创建一个新的线程show,执行action方法
show = new Thread(action);
// 启动线程
show.Start();
}
// action方法,用于在单独的线程中执行图像采集和显示
private void action()
{
// 初始化局部和输出图标变量ho_Image
HOperatorSet.GenEmptyObj(out ho_Image);
// 打开图像采集设备,获取采集句柄
HOperatorSet.OpenFramegrabber("DirectShow", 1, 1, 0, 0, 0, 0, "default", 8, "rgb",
-1, "false", "default", "[0] HP Wide Vision HD Camera", 0, -1, out hv_AcqHandle);
// 开始图像采集
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
// 无限循环,用于连续采集图像
while ((int)(1) != 0)
{
// 释放ho_Image占用的资源
ho_Image.Dispose();
// 异步采集图像
HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
// 在hWindowControl1的HalconWindow中显示图像
HOperatorSet.DispObj(ho_Image, hWindowControl1.HalconWindow);
// 这里可以添加对采集到的图像进行处理的其他代码
}
// 关闭图像采集设备
HOperatorSet.CloseFramegrabber(hv_AcqHandle);
// 释放ho_Image占用的资源
ho_Image.Dispose();
}
// button2的点击事件处理方法
private void button2_Click(object sender, EventArgs e)
{
// 关闭图像采集设备
HOperatorSet.CloseFramegrabber(hv_AcqHandle);
// 终止show线程
show.Abort();
}
}
}
9. 启动项目 ->