• C#应用视频教程3.3 Halcon+C#测试


    接下来我们考虑把Halcon的代码移植到C#程序上,首先找到halcon的dll(.NET类库有1.0,2.0,3.5的,如果你安装了更新版本的halcon则有更新的.NET类库,我们复制最新的dll到自己新建C#程序的Debug目录下)

     

    直接把这个DLL拖放到工具箱上,然后可以出现一个HWindowControl的控件(跟上一节OPENGL很像)

     

    把你的C#程序目标平台改成对应的电脑系统版本,同时目标框架4(个人经验,如果改成.NET Framework 3.5或者4.5都会有问题),可以直接F5运行一下看又没有报错

     

    执行Halcon的代码导出,先来看最简单的代码导出,打开官方的范例clip,然后导出为C#的程序(保持所有设置如下)

     

    在前面做好的C#程序中定义一个新的类,然后直接复制粘贴所有代码(顶部添加引用HalconDotNet,然后把class XXX删掉直接复制这个HDevelopExport)

     

    在主程序中直接窗体载入的时候写下面两句话,生成类的实例,然后执行实例的RunHalcon方法(不管你的Halcon程序多么复杂,在导出为C#类的时候都只有很少的几个方法)

     

    如果不能运行则注释掉报错的代码(比如disp_continue_message,就是类似于显示一个文字,箭头这种方法可能还不支持),这些不影响使用

     

    可以发现整个程序已经可以运行了(虽然还不能像Halcon那样把所有采集到的变量放到数组中,这些我们后面再考虑)

     

    那么能不能做的简单一点呢?我们如果只是希望展示一副图片,或者打开相机采集接口,首先还是用Halcon产生三种图片的获取方法(都可以用Image Acquistion方法自动生成代码)

     

    将产生的C#程序做一下重新编排,Action里面只放第一段的代码

     

    再把第二段的代码重新创建一个方法,并且放进去(跟前面的方法很类似)

     

    测试发现都是可以正常运行的,由此我们就可以自己扩充Halcon导出的类了

     

    那么如何支持相机的图像呢?跟官方导出的代码不同,我们这里需要注意while死循环中一方面采集,一方面就要显示(DispObj方法),此外由于是死循环,所以需要放到额外的线程中执行,否则界面会卡死

     

    有相机的打开,就要有对应的关闭方法,最方便的做法还是做一个全局的布尔值,如果是false,则不执行抓取图像和显示图像的操作(读这样可以测试使用官方的CloseFramegarbber方法跟前面开启对应,实际上还是会有很多问题,窗体会卡死)

     

    已经可以正常采集到相机的图像了(注意打开浏览静态图像之前先关闭掉相机采集图像,此外这里使用的还是绝对的文件路径,所以如果你的项目不在桌面上,第二幅图片可能打不开)

     

     

    更多教学视频和资料下载,欢迎关注以下信息:

    我的优酷空间:

    http://i.youku.com/acetaohai123

     

    我的在线论坛:

    http://csrobot.gz01.bdysite.com/

     

    问题交流:

    QQ:910358960

    邮箱:acetaohai123@163.com

     

     

     

  • 相关阅读:
    第五届“飞思卡尔”智能车竞赛分赛区赛后总结
    最佳编程语录
    通过UserAgent判断智能手机(设备,Android,IOS)
    Sql Server 系统存储过程分析 2 数据库引擎存储过程
    OutputCache 导致页面下载的解决办法
    w3wp.exe(IIS ) CPU 占用 100% 的常见原因及解决办法
    过滤并替换页面html输出
    Sql Server 系统存储过程分析 1 目录存储过程
    Sql Server 监控 Job 执行情况
    OutPutCache 自定义缓存:session、登录用户、cookie 等
  • 原文地址:https://www.cnblogs.com/acetaohai123/p/7586774.html
Copyright © 2020-2023  润新知