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
C#应用视频教程3.3 Halcon+C#测试的更多相关文章
- C#应用视频教程3.4 Halcon+C#测试
有了前面的基础后,我们来测试一下如何把程序做的更通用,首先是把初始化的方法修改一下,在初始化的时候传递过去HTuple这个对象(改成了全局的变量,以便于不同的方法调用) 其次需要有相机打开/相机关 ...
- C#应用视频教程3.2 Halcon软件测试
Halcon是图像处理比较牛逼的一个软件(德国人的东西,做的非常强大,里面集成的算法很多,可能你一辈子研究这个也做不过他),然而牛逼归牛逼,康耐视,基恩士也很牛逼,但是日本人的东西一般太过封闭,屌丝用 ...
- C#应用视频教程3.1 USB工业相机测试
图像处理是工控很有价值的一个领域,比如人脸识别,车牌识别,还有产品的位置识别,瑕疵检测,对于个人学习来说,我们无法直接上手几万块的成熟工业相机(高端的康耐视要6万左右,而且是黑白的,要测试一些带颜色的 ...
- Halcon算子解释
Halcon算子解释大全 Halcon/Visionpro视频教程和资料,请访问 重码网,网址: http://www.211code.com Chapter 1 :Classification 1. ...
- halcon算子
halcon的算子列表 Chapter 1 :Classification 1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样 ...
- halcon的算子列表
Chapter 1 :Classification 1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样本添加到一个高斯混合模型的训 ...
- 《zw版·delphi与halcon系列原创教程》zw版_THOperatorSetX控件函数列表 v11中文增强版
<zw版·delphi与halcon系列原创教程>zw版_THOperatorSetX控件函数列表v11中文增强版 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就 ...
- Halcon 常用算子使用场合
Chapter 1 :Classification 1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样本添加到一个高斯混合模型的训 ...
- HALCON中的算子大全(中英对照)
HALCON中的算子大全(中英对照) Chapter 1 :Classification1.1 Gaussian-Mixture-Models1.add_sample_class_gmm功能:把一个训 ...
随机推荐
- Lambda演算(一)大道至简
从选择信息专业开始到回炉读书为止,四舍五入码了八年代码.对于计算机科学的认知仅限于: 1)使用不同语言实现特定功能 2)实现不同算法以增进系统性能 3)搭建不同架构进行组织管理 但从未思考一些本质 ...
- [BJOI2017]魔法咒语 --- AC自动机 + 矩阵优化
bzoj 4860 LOJ2180 洛谷P3175 [BJOI2017]魔法咒语 题目描述: Chandra 是一个魔法天才. 从一岁时接受火之教会洗礼之后,Chandra 就显示出对火元素无 ...
- luoguP4284 [SHOI2014]概率充电器 概率期望树形DP
这是一道告诉我概率没有想象中那么难的题..... 首先,用期望的线性性质,那么答案为所有点有电的概率和 发现一个点的有电的概率来源形成了一个"或"关系,在概率中,这并不好计算... ...
- BZOJ 2612 [Poi2003]Sums(最短路)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2612 [题目大意] 给定a数组,问num能否被表示为a[1]*x[1]+a[2]*x[ ...
- 《深入理解Spark-核心思想与源码分析》(六)第六章计算引擎
RDD是Spark对各类数据计算模型的统一抽象,被用于迭代计算过程以及任务输出结果的缓存读写. 在所有MapReduce框架中,shuffle是连接map任务和reduce任务的桥梁.shuffle性 ...
- ActivityMQ实际应用常见问题
1.ActiveMQ支持消息过滤设置规则和用法selector支持下列几种方式:(1) String literals: "color ='blue'"(2) Byte strin ...
- 关闭Spring Boot的Jsckson的FAIL_ON_EMPTY_BEANS
说明:Spring Boot中默认使用了Jackson做JSON的解析. 解决方法: 1.通过注入Bean来实现 错误: org.springframework.http.converter.Http ...
- Java常量定义需要注意的两点
在任何开发语言中,都需要定义常量.在Java开发语言平台中也不例外.不过在Java常量定义的时候,跟其他语言有所不同.其有自己的特色.在这篇文章中,主要针对Java语言中定义常量的注意事项进行解析,帮 ...
- HDU 4678 Mine (2013多校8 1003题 博弈)
Mine Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submis ...
- linux开发node相关的工具
epel-release yum install epel-release node yum install nodejs mongodb 安装mongodb服务器端 yum install mong ...