C#联合VS2022和Halcon(一),创建项目,配置环境并打开摄像头

1.创建C#项目并配置Halcon环境

1.1创建项目。打开vs2022创建新项目
在这里插入图片描述
语言选择c#,选择Windows窗体应用(.NET Framework)
在这里插入图片描述
根据自己需要,更改项目名称,项目位置。框架选择最新版本
在这里插入图片描述
出现以下界面表示创建成功
在这里插入图片描述
1.2 配置环境,在c#中调用halcon
1.2.1 添加HWindowControl控件
在WinForm中通过Halcon调用摄像头或图片时,必须要使HWindowControl控件。WindForm界面工具箱中本身不存在HWindowControl控件,需要手动添加。在工具箱中右键→选择项(I)…→选择浏览→选择D:\Halcon21.11\HALCON-21.11-Progress\bin\dotnet35\halcondotnet.dll文件→点击打开。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在工具箱里搜索,出现下面两个表示添加成功
在这里插入图片描述
1.2.2 添加项目引用
在这里插入图片描述
在这里插入图片描述
浏览的位置是halcon的安装路径中
在这里插入图片描述
出现下图表示添加引用成功
在这里插入图片描述

2.Halcon导出打开摄像头的程序

在Halcon中,通过助手(A)→打开新的Image Acquisition,选择资源→选择图像获取接口→选择DirectShow。
在这里插入图片描述
点击连接,可以看到设备信息
在这里插入图片描述
选择代码生成→插入代码,之后会在程序窗口显示代码
在这里插入图片描述
选则文件→导出语言,选择如下图
在这里插入图片描述

3. C#上位机界面打开摄像头

首先在设计界面放两个Button和一个HWindowControl
在这里插入图片描述
完整代码,注意在代码开头

namespace OpenCamera
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Thread callcamera;
        private void Form1_Load(object sender, EventArgs e)
        {
            callcamera = new Thread(action);
        }

        private void action()
        {
            // Local iconic variables 
            HObject ho_Image = null;
            // Local control variables 
            HTuple hv_AcqHandle = new HTuple();
            // Initialize local and output iconic variables 
            HOperatorSet.GenEmptyObj(out ho_Image);
            //Image Acquisition 01: Code generated by Image Acquisition 01
            hv_AcqHandle.Dispose();
            HOperatorSet.OpenFramegrabber("DirectShow", 1, 1, 0, 0, 0, 0, "default", 8, "rgb",
                -1, "false", "default", "[1] Intel(R) RealSense(TM) Depth Camera 435 with RGB Module RGB",
                0, -1, out hv_AcqHandle);
            HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
            while ((int)(1) != 0)
            {
                ho_Image.Dispose();
                HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
                //Image Acquisition 01: Do something
                HOperatorSet.DispObj(ho_Image, hWindowControl1.HalconWindow);
            }
            HOperatorSet.CloseFramegrabber(hv_AcqHandle);
            ho_Image.Dispose();
            hv_AcqHandle.Dispose();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (callcamera.ThreadState== ThreadState.Unstarted)
            {
                callcamera.Start();
            }
            else
            {
                //Resume方法微软官方已不建议使用
                callcamera.Resume();
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            callcamera.Suspend();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (callcamera!=null&& callcamera.ThreadState!=ThreadState.Suspended)
            {
                callcamera.Abort();
            }
            if (callcamera.ThreadState == ThreadState.Suspended)
            {
                callcamera.Resume();
                callcamera.Abort();
            }
        }


    }

在这里插入图片描述

  • 5
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值