halcon联合c#编程 实时打开笔记本摄像头

利用halcon12联合vs2015,采用c#线程方式来打开电脑摄像头
首先创建winform界面,其次添加picturebox和button两个控件
halcon联合c#编程 实时打开笔记本摄像头_第1张图片
添加halcondotnet.dll引用
halcon联合c#编程 实时打开笔记本摄像头_第2张图片
halcon联合c#编程 实时打开笔记本摄像头_第3张图片
然后打开halcon助手
halcon联合c#编程 实时打开笔记本摄像头_第4张图片
选择DirectShow
halcon联合c#编程 实时打开笔记本摄像头_第5张图片
点击实时
halcon联合c#编程 实时打开笔记本摄像头_第6张图片

然后导出插入代码,并且halcon代码
halcon联合c#编程 实时打开笔记本摄像头_第7张图片
halcon联合c#编程 实时打开笔记本摄像头_第8张图片

下面是整合的码源:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using HalconDotNet;

namespace 电脑相机实时采集
{
public partial class Form1 : Form
{
HTuple hv_WindowId;

    HObject ho_Image = null;
    HTuple hv_AcqHandle = new HTuple(), hv_WindowHandle = new HTuple();
    HTuple hv_Width = new HTuple(), hv_Height = new HTuple();
    bool m_fContinueGrab = false;
    //定义线程
    Thread thContGrab;
    //在按钮中添加开启关闭线程
    private void button1_Click(object sender, EventArgs e)
    {
        if (m_fContinueGrab == false)
        {
            m_fContinueGrab = true;
            thContGrab = new Thread(ThreadContinueGrab);
            thContGrab.Start();
            thContGrab.IsBackground = true;
            button1.Text = "停止";
        }
        else
        {
            m_fContinueGrab = false;
            thContGrab.Abort();
            button1.Text = "实时";
        }
    }
    //定义实时采图的线程函数
    private void ThreadContinueGrab()
    {
        while (true)
        {
            //先要销毁图像,不然会造成内存泄漏
            ho_Image.Dispose();
            //采图显示
            HOperatorSet.GrabImage(out ho_Image, hv_AcqHandle);
            HOperatorSet.DispObj(ho_Image, hv_WindowId);
        }
        }
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        HOperatorSet.GenEmptyObj(out ho_Image);
        //先要销毁图像,不然会造成内存泄漏
        ho_Image.Dispose();
        //开窗口
        HOperatorSet.OpenWindow(0, 0, pictureBoxShow.Width, pictureBoxShow.Height, pictureBoxShow.Handle, "", "", out hv_WindowId);
        //开相机
        HOperatorSet.OpenFramegrabber("DirectShow", 1, 1, 0, 0, 0, 0, "default", 8, "rgb",
           -1, "false", "default", "[0] Integrated Camera", 0, -1, out hv_AcqHandle);
        //抓取图像
        HOperatorSet.GrabImage(out ho_Image, hv_AcqHandle);
        //得到图像尺寸大小
        HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
        //设置窗口上显示整幅图
        HOperatorSet.SetPart(hv_WindowId, 0, 0, hv_Height, hv_Width);
        //在窗口上显示图像
        HOperatorSet.DispObj(ho_Image, hv_WindowId);
        ho_Image.Dispose();
    }
}

}
生成结果:
halcon联合c#编程 实时打开笔记本摄像头_第9张图片
halcon联合c#编程 实时打开笔记本摄像头_第10张图片
需要下载该应用的朋友 联系QQ:1543180679,不需要通过积分下载。

你可能感兴趣的:(c#)