halcon如何识别硬币?
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.总结
我在这里偷了懒,只是取了外圈大小,来确定不同硬币的识别,如果图片中存在不是硬币,但是大小一样,这样一定会误检,这也是我们的这个方案不严谨的地方,这是案例,我们以学习为主,如果你有更好的方式,请不吝赐教!
halcon如何识别硬币?的更多相关文章
- C#中的深度学习(四):使用Keras.NET识别硬币
在本文中,我们将研究一个卷积神经网络来解决硬币识别问题,并且我们将在Keras.NET中实现一个卷积神经网络. 在这里,我们将介绍卷积神经网络(CNN),并提出一个CNN的架构,我们将训练它来识别硬币 ...
- C#中的深度学习(一):使用OpenCV识别硬币
在本系列文章中,我们将使用深度神经网络(DNN)来执行硬币识别.具体来说,我们将训练一个DNN识别图像中的硬币. 在本文中,我们将描述一个OpenCV应用程序,它将检测图像中的硬币.硬币检测是硬币完整 ...
- C#中的深度学习(二):预处理识别硬币的数据集
在文章中,我们将对输入到机器学习模型中的数据集进行预处理. 这里我们将对一个硬币数据集进行预处理,以便以后在监督学习模型中进行训练.在机器学习中预处理数据集通常涉及以下任务: 清理数据--通过对周围数 ...
- Halcon 条形码识别
read_image (Image, 'C:/Users/HJ/Desktop/test_image/image.png') create_bar_code_model([], [], BarCode ...
- 【《zw版·Halcon与delphi系列原创教程》 zw_halcon人脸识别
[<zw版·Halcon与delphi系列原创教程>zw_halcon人脸识别 经常有用户问,halcon人脸识别方面的问题. 可能是cv在人脸识别.车牌识别方面的投入太多了. 其实,人脸 ...
- zw版·Halcon与delphi(兼谈opencv)
zw版·Halcon与delphi(兼谈opencv) QQ群 247994767(delphi与halcon) <Halcon与delphi>系列,早两年就想写,不过一方面,因为Halc ...
- halcon-车牌识别
halcon代码: 1: read_image(Image,'D:/MyFile/halcon/车牌识别/图片.jpg') 2: decompose3(Image,ImageR,ImageG,Imag ...
- 【halcon】学习记录
图像采集和二值化等处理 * Image Acquisition : Code generated by Image Acquisition open_framegrabber (, , , , , , ...
- c#下halcon配置
1.在halcon中写入算子,实现函数过程 比如: read_image(Image,'D:/MyFile/halcon/数字识别/1.jpg') decompose3(Image, ImageR, ...
- .export*读取图片
*读取图片 read_image(Image,'D:/MyFile/halcon/数字识别/1.jpg define PHYS_FLASH2_1 0xBC000000 /* Image2 Bank # ...
随机推荐
- 《吐血整理》高级系列教程-吃透Fiddler抓包教程(21)-如何使用Fiddler生成Jmeter脚本-上篇
1.简介 通过跟随宏哥的脚步学习宏哥的Jmeter系列文章,.我们知道Jmeter本身可以录制脚本,也可以通过BadBoy,BlazeMeter等工具进行录制,其实Fiddler也可以录制Jmter脚 ...
- 后端程序员实现一个IP归属地的小程序
在日常开发中,后端主要提供数据以及处理业务逻辑,前端主要提供页面布局以及数据展示.后端程序员对于页面布局接触比较少,但是小程序有完善的文档说明.页面布局也相对简单,实现起来相对简单一些.而且小程序相对 ...
- 工程课Linux第一节笔记
上课笔记 文件系统结构 /根目录 /bin/ 存放系统命令,普通用户与root都可以执行 /etc/ 配置文件保存位置 /lib/ 系统调用的函数库保存位置 /var/ 目录用于存储动态数据,例如缓存 ...
- docker垃圾处理
1 查找docker文件夹 find / -name docker 2 列举文件夹大小 du -h --time --max-depth=1 . df -h df -TH 3 Docker占用磁盘空间 ...
- EFK-1:快速指南
转载自:https://mp.weixin.qq.com/s?__biz=MzUyNzk0NTI4MQ==&mid=2247483801&idx=1&sn=11fee5756c ...
- DevOps图示
- 《Thinking In Java》作者:不要使用并发!
前言 今天纯粹就是带你们来读读书的~ 最近除了工作,特地买回了自己很喜欢的作者新发售的一本书<On Java>,作者是我的老朋友布鲁斯·埃克尔,在Java领域很有名,你可能没听过他的名字, ...
- PAT (Basic Level) Practice 1024 科学计数法 分数 20
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...
- PHP全栈开发(八):CSS Ⅱ 创建
CSS一共有三种创建方式,分别是 外部样式表 内部样式表 内联样式表 外部样式表顾名思义,是将HTML文件与CSS文件分开,形成两个独立的文件,CSS文件以.css结尾. 我们可以在HTML的头部里面 ...
- IDEA 调试起来太费劲?你需要了解这几招!
各位好啊,我是会编程的蜗牛,我们在使用IDEA开发java项目时,经常需要用到IDEA的调试功能,不过平时我们用的调试方法可能过于简单了,其实IDEA还给我们提供了非常强大的调试功能,下面让我来看一看 ...