halcon联合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所在的目录下(bindebug)

    在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,否则提示:“相机已关闭!”

    

原文地址:https://www.cnblogs.com/eve612/p/13612949.html