Halcon联合c#模板匹配编程超详细思路讲解,包含界面自选参数、匹配多个模板、界面采用表格输出匹配数据。可能直接实战

第一次发文章,有点小激动,各位大佬可以点波关注后续会持续更新

 

运行效果如下:

72e9773790e64b5fb24ff27a427ccd12.png

还有扩展的空间,可以对输出参数进行排序等。

废话不多说,直接上干货。

我们知道模板匹配算子是用来匹配模板加坐标补正的,它是先创建模型,然后在实现匹配模型,其实可以说是两个算子。

这里我就不说怎么把Halcon转c#了,本篇文章主要讲述标题里面的内容,不过大家有相关的需求都可以评论下来,后续我会更新。

我们把Halcon转成c#后,相关的类文件会显示在保存的路径上,如下图双击进去:

97543813d19b4839ab9d7b3e2d4fec4a.png

进去后我们会看到一大堆代码,相信很多小伙伴第一次都会懵圈,其实我们只需要用到action内的代码即可(也不需要全部用到,里面也有一些用不到的)

首先第一步找到action,如下图:

ec18e9cd65874e72b9cc95504acb0d61.png

 这里先发部分源码

7323b3cf8a1e4e9184077118c8e21041.png

首先我们创建一个窗体来使用这个算法如下图:

7c0322892f9a4383993183e3c8f796ab.png

图中左边白色区域是winform自带控件属性表,这里我们使用该控件来定义模板匹配的创建参数以及匹配参数 ,部分代码如下:

a6646a1ba51f4c998d59b1797d40ffeb.png

 效果如下:

9d9557c313af4ca9840ed5efc7394720.png

左边是参数描述,右边的值都是可以更改的,不同的参数类型有不同的属性变量 

然后我们需要为Halcon控件显示我们需要用处理的图像,这里我们测试用本地图像,实际上是需要用到相机sdk来采集图像进行匹配的,部分代码如下:

af9b693faff54dbabe8d9c3424b882af.png

有了图像后,我们还需要创建对应的ROI,这里我们选择带有旋转的矩形ROI比较方便,这里封装了对应的方法调用即可,部分代码如下: 

9ab123c2ebcf445bac8fdecc5deda949.png

有了ROI后,我们还需要实时获取ROI移动的位置,否则ROI会出现突然消失等异常现象,部分代码如下:

90e8b068981d4059a30ca423bce29c33.png

 

现在可以开始创建模板了

将我们需要的代码从类文件中复制过来后,通过绑定按钮实现模型的创建,并将模板显示在对应的模板图像中。

部分代码如下:

6fc63e4fa85e4f069427efd333cc1dd6.png

 效果如下:

c446b2c12db242928eb5d451aae3c81f.png

 还可以扩展一些其它功能,如上图显示的开关ROI显示,模板轮廓和名字等等。

创建好模板后,我们就可以开始最重要的一步匹配模型了,这里要注意参数要适当,否则会出现匹配不到的现象,我们可以再设置参数时给它一个初始值并且在上文中讲述了参数控件是winform自带的属性表,我们可以设置对应参数的说明文档。

同样,匹配模型我们还是用按钮的点击事件来触发对应代码。

部分代码如下:

76f35de40fd34629ba34b077d7c84d9b.png

 

 有一些细节方面补充一下:

1:在匹配时最好加上异常捕获机制,否则匹配失败程序直接挂了,影响体验

2:需要先判断是否有需要匹配的图像,否则图像都没有,肯定报错

3:匹配多个模型的话,我们只需要如上图所示循环即可,循环匹配循环输出对应的参数。

最后,我们利用循环再把结果输出在对应的控件上即可,注意每次运行要先清空表格类的数据

部分代码如下:

2785993761d943f7b7017e93271dd913.png

 效果如下:图1

073617fd8aa64f28b8bfa355e25bb267.png

可以看到这里我们把匹配个数设置为0后匹配到了更多的模型,如果还要匹配更多,可以将分数或者贪婪度降低

效果2显示对应的输出参数

843db93e69fc4765997ec4c2120ef1ea.png

 

 

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值