halcon如何识别硬币?
前言
最近一直在学习halcon,在此做了一个案例,分享给大家,效果图如下:
1.思路分析
通过观察,发现1元,5角,1角,它们在面值的文字描述不一样,硬币显示的花纹不一样,如果我们通过模板匹配,那我们需要考虑2个因素,正/反面完全不一样。
换个思路,找到不变的因素【硬币外圈大小】,用最小的变量作为我们判断的基准,从而降低问题的复杂度。
2.代码逻辑分析
- 我们首先指定3个模板【硬币的圆圈大小】
- 读取原图片
- 使用模板匹配
- 标注不同的硬币
3.代码实现
3.1 创建模板
点击查看代码
创建模板
*画外圈圆
draw_circle (3600, Row1, Column1, Radius)
gen_circle (Circle, Row1, Column1, Radius)
dev_display (Image)
*画内圈圆
draw_circle (3600, Row2, Column2, Radius1)
gen_circle (Circle1, Row2, Column2, Radius1)
*取区域的差
difference (Circle, Circle1, RegionDifference)
reduce_domain (ImageEmphasize, RegionDifference, ImageReduced)
*创建模板
create_shape_model (ImageReduced, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
write_shape_model (ModelID, 'D:/WorkSpace/硬币/1元.shm')
3.2 模板匹配
点击查看代码
read_image (Image, 'E:/WorkSpace/HalconDemo/硬币检测/硬币/微信图片_20220620213720.jpg')
*均值滤波器
mean_image (Image, ImageMean, 3, 3)
*图片增亮
emphasize (ImageMean, ImageEmphasize, 7, 7, 10)
*读取模板
read_shape_model ('1元.shm', ModelID)
read_shape_model ('1角.shm', ModelID1)
read_shape_model ('5角.shm', ModelID2)
arr:=[ModelID,ModelID1,ModelID2]
*设置字体的样式
set_display_font (3600, 30, 'mono', 'true', 'false')
for Index1 := 0 to 2 by 1
*模板匹配
find_shape_model (Image, arr[Index1], -0.39, 0.78, 0.4, 0, 0.5, 'least_squares', 2, 0.9, Row, Column, Angle, Score)
if (|Score|>0)
tuple_length (Row, Length1)
for Index2 := 0 to Length1-1 by 1
*字符串显示的位置
set_tposition (3600, Row[Index2]-40, Column[Index2]-40)
switch (Index1)
case 0:
dev_set_color ('red')
write_string (3600, '1元')
break
case 1:
dev_set_color ('green')
write_string (3600, '1角')
break
case 2:
dev_set_color ('blue')
write_string (3600, '5角')
break
endswitch
endfor
endif
endfor
4.效果展示
效果1:
效果2:
5.总结
我在这里偷了懒,只是取了外圈大小,来确定不同硬币的识别,如果图片中存在不是硬币,但是大小一样,这样一定会误检,这也是我们的这个方案不严谨的地方,这是案例,我们以学习为主,如果你有更好的方式,请不吝赐教!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
版权声明:
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com