前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >halcon联合c#采集显示(打开/关闭相机)

halcon联合c#采集显示(打开/关闭相机)

作者头像
vv彭
发布2020-10-27 11:06:21
5.2K0
发布2020-10-27 11:06:21
举报
文章被收录于专栏:c#学习笔记

第一部分 halcon篇(hdevelop 17.12)

一、使用halcon的open_framegrabber算子打开相机

1.打开相机:open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1, 'false', 'default', '002149019150_DahengImaging_MER50014GM', 0, -1, AcqHandle)

  参数:

2.异步采集:grab_image_start (AcqHandle, -1)

  参数:

AcqHandle (input_control)   framegrabber → (integer)   要使用的采集设备的句柄。

MaxDelay (input_control)    number → (real)   这个参数已经过时,并没有效果。   Default value: -1.0   Suggested values: -1.0, 20.0, 33.3, 40.0, 66.6, 80.0, 99.9

二、先关闭窗口,再打开一个新窗口

1.关闭窗口:dev_close_window()

2.打开窗口:dev_open_window(0,0,512,512,‘black’,WindowHandle)

  参数:

  (前面四个参数是窗口的左上角和右下角坐标值)

  (第五个参数是窗口的背景颜色)

  (第六个参数是打开窗口的句柄)

三、循环采集

1.开始循环:while (true)   参数:

  (true表示无限循环) 2.采集图像:grab_image_async (Image, AcqHandle, -1)

  参数:

  (image表示图像变量)

  (Acqhandle为相机设备句柄)

  (-1表示异步抓取开始和图像传送之间的最大容许延迟[ms])

3.获取图像宽度get_image_size (Image, Width, Height)

  参数:

  (image同上)

  (后面两参数表示图像宽度,注意宽和高的顺序别写错) 4.设置显示图像宽度:dev_set_part (0, 0, Width, Height)

  参数:

  (分别表示显示的左上角坐标和右下角坐标,主要这里宽是纵坐标,高是横坐标,注意同上)

5.显示图像:dev_display(Image)

  参数:

  (显示的图像变量) 6.结束循环:endwhile

四、关闭相机

1.关闭相机:close_framegrabber (AcqHandle)

                            第二部分 c#篇(visual studio 2015)

一、配置环境

1.选择相应的框架平台

项目——属性——对应的框架平台(我选net framework4.5.2)

2.选择生成的平台

  项目——属性——生成——目标平台(我选x64)

3.添加引用

  (1)添加halcon的.net动态库halcondotnet.dll

      右击引用——添加引用——浏览——选择halcon安装目录(MVTec)——bin——选择对应的net框架——选择halcondotnet.dll;

 (2)添加命名空间HalconDotNet

      在添加命名空间处输入 using HalconDotNet;

(3)添加halcon图像窗口控件

      工具箱——公共控件——选择项——浏览——选择halcondotne.dll;

(4)将动态halcon.dll和halcondotnet.dll库复制到项目的exe所在的目录下(bin\debug)

    在halcon安装目录找到对应的动态库——手动复制到项目的debug目录下(注意选择相应的平台)

    (其中halcondotnet.dll可以不用复制,因为完成以上步骤后,只要编译程序,会自动添加到debug目录下,但是还是提倡手动添加一下)

二、导入halcon导出的采集显示程序

1.halcon导出c#文件

2.打开C#文件

三、c#新建Windows窗体应用程序项目

1.添加一个hWindowControl控件显示采集的图像,一般不使用hsmartwindowcontrol控件

2.添加四个bottom控件,分别修改text属性为:打开相机、关闭相机、单次执行、连续执行

3.添加一个Timer控件,用于实现循环采集,控制采集帧率(但精度不高)

4.定义一个bool变量,来记录相机开关状态

四、整合halcon导出的程序到项目中

1.复制定义变量程序

  (1)在halcon导出的C#程序中,我们只需关注private void action(){}里的程序

  (2)复制private void action(){}里的定义变量程序,其中HObject定义的为图像变量,而HTuple定义的为控制变量

  (3)把它们复制到项目窗口类下,作为该窗口类的全局变量

2.复制打开相机程序

  判断自定义的变量openCamear是否为false,如果是,打开相机,并给openCamear赋值为true,否则输出提示:“相机已打开!”

3.复制连续采集程序

  (1)把定时器关闭放入采集显示的botten按钮中

  (2)在定时器的Tick事件里添加halcon导出陈序的while部分,实现循环采集(注意不包含while)

3.单次采集

  和定时器的Tick事件里面代码一样,但是要加多一句如下,关闭计时器。(注意一样需要判断相机是否为打开状态)

4.关闭相机

  首先判断相机是否打开,如果打开,则关闭并把openCamear赋值为false,否则提示:“相机已关闭!”

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档