文章实时采集( 启蒙续集之Halcon联合C#以及手眼以及标定实时采集方法)

优采云 发布时间: 2021-10-30 22:22

  文章实时采集(

启蒙续集之Halcon联合C#以及手眼以及标定实时采集方法)

  Halcon结合C#实时采集图像 Halcon结合C#实时采集图像

  内容中引用的学习课程为超人视频:Halcon结合C#和手眼校准

  实时采集方法有四种:循环采集、定时器、多线程、回调函数

  这篇文章在之前的代码上做了改进,所以我把之前的代码复制了一份,再次打开发现这个界面:

  

  如何打开 C# 设计窗口:

  

  改进过程:

  1.halcon 部分

  在halcon中打开采集助手,自动检测接口,连接,实时,插入代码

  

  

  

  

  Halcon 代码的一部分是:

  * Image Acquisition 01: Code generated by Image Acquisition 01

open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, 'progressive', 8, 'rgb', -1, 'false', 'default', '0030532361ef_Basler_acA160020gc', 0, -1, AcqHandle)

grab_image_start (AcqHandle, -1)

while (true)

grab_image_async (Image, AcqHandle, -1)

get_image_size (Image, Width, Height)

dev_set_part (0, 0, Height, Width)

endwhile

close_framegrabber (AcqHandle)

  2.C#部分

  配置如上一篇文章,我直接用上次代码改了,所以没有重新配置。

  添加控件定时器,属性栏如下。定时器方法不准确,间隔越长越不准确。单击闪电符号,Interval 更改为 40ms,事件将在 40ms 后执行。定时器开启后,不要采集关闭,否则会出现错误:HALCON error #2454: HALCON handle has already clear in operatorgrab_image_async

  

  

  下一步就是双击不同的控件,然后将halcon导出的代码复制粘贴到相应位置即可。

  在Halcon导出的C#代码中,只需要关注action函数中的代码即可:

  // Local iconic variables

HObject ho_Image=null;

// Local control variables

HTuple hv_AcqHandle = new HTuple(), hv_Width = new HTuple();

HTuple hv_Height = 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("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive",

8, "rgb", -1, "false", "default", "0030532361ef_Basler_acA160020gc", 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);

hv_Width.Dispose();hv_Height.Dispose();

HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);

if (HDevWindowStack.IsOpen())

{

HOperatorSet.SetPart(HDevWindowStack.GetActive(), 0, 0, hv_Height, hv_Width);

}

}

HOperatorSet.CloseFramegrabber(hv_AcqHandle);

ho_Image.Dispose();

hv_AcqHandle.Dispose();

hv_Width.Dispose();

hv_Height.Dispose();

  打开相机部分的代码:

   #region 打开相机

private void button3_Click(object sender, EventArgs e)

{

//清空、打开、初始化相机

// Initialize local and output iconic variables

HOperatorSet.GenEmptyObj(out ho_Timg);

//Image Acquisition 01: Code generated by Image Acquisition 01

hv_AcqHandle.Dispose();

HOperatorSet.OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive",

8, "rgb", -1, "false", "default", "0030532361ef_Basler_acA160020gc", 0, -1,

out hv_AcqHandle);

HOperatorSet.GrabImageStart(hv_AcqHandle, -1);

textBox1.Text = "相机已打开!";

}

#endregion

  采集显示部分代码:

  注意:如果显示的图像只是halcon中可以看到的一部分,则说明halcon中没有使用dev_set_part()函数

  #region 采集显示

///

/// 此部分包含定时器的触发

///

///

///

private void button4_Click(object sender, EventArgs e)

{

timer1.Enabled = true;

//打开窗口显示图片

HOperatorSet.OpenWindow(0, 0, hWindowControl1.Width, hWindowControl1.Height, hWindowControl1.HalconWindow, "visible", "", out hv_WindowHandle);

HDevWindowStack.Push(hv_WindowHandle);

}

private void timer1_Tick(object sender, EventArgs e)

{

ho_Timg.Dispose();

//获取图片

HOperatorSet.GrabImageAsync(out ho_Timg, hv_AcqHandle, -1);

//获取图片长宽

hv_Width.Dispose(); hv_Height.Dispose();

HOperatorSet.GetImageSize(ho_Timg, out hv_Width, out hv_Height);

//设置获取的图片在窗口中显示大小(此部分如果没有,则只能显示采集到的一部分图像)

if (HDevWindowStack.IsOpen())

{

HOperatorSet.SetPart(HDevWindowStack.GetActive(), 0, 0, hv_Height, hv_Width);

}

//如果窗口打开,显示图片

if (HDevWindowStack.IsOpen())

{

HOperatorSet.DispObj(ho_Timg, HDevWindowStack.GetActive());

textBox1.Text = "实时录像成功!";

}

}

#endregion

  关闭相机部分代码:

   #region 关闭相机

private void button5_Click(object sender, EventArgs e)

{

//关闭定时器这步十分重要,不能少了

timer1.Enabled = false;

HOperatorSet.CloseFramegrabber(hv_AcqHandle);

ho_Timg.Dispose();

textBox1.Text = "关闭相机成功!";

}

#endregion

  Halcon与C#实时采集图像相关教程Unity与nodejs实时连接,实时音视频图像识别halcon基础应用及方法经验分享构建直播时实时音视频平台(一)实时预测用户对物品的偏好阿里云推荐引擎帮助您更好的提升业务。海量数据实时查询域名数据库设计小记(一)Spark实时e -商务数据分析与可视化HTML前端实时可视化开发工具Android平台美颜相机/相机实时滤镜/视频编解码/图片贴/人脸

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线