利用halcon12联合vs2015,采用c#线程方式来打开电脑摄像头
首先创建winform界面,其次添加picturebox和button两个控件
添加halcondotnet.dll引用
然后打开halcon助手
选择DirectShow
点击实时
然后导出插入代码,并且halcon代码
下面是整合的码源:
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();
}
}
}
生成结果:
需要下载该应用的朋友 联系QQ:1543180679😊,不需要通过积分下载。