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

        

  • 相关阅读:
    二叉树的非递归遍历
    关于vc变量定义顺序猜测
    单点登录详解(token简述)(七)
    session及cookie详解(七)
    dubbo(八)
    Zookeeper简介(九)
    拦截器与过滤器的区别(九)
    cookie详解(八)
    kafka可视化工具(二)
    Windows环境安装kafka(一)
  • 原文地址:https://www.cnblogs.com/eve612/p/13612949.html
Copyright © 2020-2023  润新知