halcon_C#联合halcon打开摄像头

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. 启动项目 ->


相关推荐
网易独家音乐人Mike Zhou6 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
向宇it8 小时前
【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
开发语言·游戏·unity·c#·游戏引擎
九鼎科技-Leo9 小时前
什么是 WPF 中的依赖属性?有什么作用?
windows·c#·.net·wpf
Heaphaestus,RC10 小时前
【Unity3D】获取 GameObject 的完整层级结构
unity·c#
2401_8827275710 小时前
BY组态-低代码web可视化组件
前端·后端·物联网·低代码·数学建模·前端框架
baivfhpwxf202310 小时前
C# 5000 转16进制 字节(激光器串口通讯生成指定格式命令)
开发语言·c#
直裾10 小时前
Scala全文单词统计
开发语言·c#·scala
ZwaterZ12 小时前
vue el-table表格点击某行触发事件&&操作栏点击和row-click冲突问题
前端·vue.js·elementui·c#·vue
畅联云平台13 小时前
美畅物联丨智能分析,安全管控:视频汇聚平台助力智慧工地建设
人工智能·物联网
ZwaterZ14 小时前
el-table-column自动生成序号&&在序号前插入图标
前端·javascript·c#·vue