基于OpenCV的硬币面值识别

news2024/9/22 11:32:55

本项目通过Python与Opencv结合数字图像处理技术对1元、5角、1角三种硬币进行识别。首先通过Canny算子对图像进行边缘检测,然后进一步调用定义的函数去除边缘检测后图像中的孤立点,对处理后的图像进行Hough变换检测圆曲线,进而可以把圆的半径储存在列表中,对所得到的数据进行K-means聚类分析(无监督学习),确定要将目标分为3类,进行迭代,当三类的聚类中心不在发生改变时,确定类,终止迭代。将半径值与类中心进行匹配,实现对1元、5角、1角三种硬币的识别,并在图像上标注显示。

一、方法原理

本项目通过Python与Opencv结合数字图像处理技术对1元、5角、1角三种硬币进行识别。本项目的方法实现过程如下:

首先读取图像,通过Canny算子对图像进行边缘检测,然后进一步调用定义的函数去除边缘检测后图像中的孤立点,对处理后的图像进行广义Hough变换检测圆曲线,进而可以把圆的半径储存在列表中,对所得到的数据进行K-means聚类分析(无监督学习),确定要将目标分为3类,进行迭代,当三类的聚类中心不在发生改变时,确定类,终止迭代。将半径值与类中心进行匹配,实现对1元、5角、1角三种硬币的识别,并在图像上标注显示。此外我们与Matlab程序实验结果进行对比。经测试证明,Opencv所写程序既保持了高效的识别率,代码较少,有一定的实际应用价值。

OpenCV图像处理过程如下:

简介广义Hough变换检测圆:在检测直线时,常常考虑的是使用 来表示一条直线,其中 为该直线到原点的垂直距离, 为该直线的垂线与x轴夹角。如图1.2所示:

 

 

简介K-means聚类分析:谓聚类算法是指将一堆没有标签的数据自动划分成几类的方法,属于无监督学习方法,这个方法要保证同一类的数据有相似的特征。根据样本之间的距离或者说是相似性(亲疏性),把越相似、差异越小的样本聚成一类(簇),最后形成多个簇,使同一个簇内部的样本相似度高,不同簇之间差异性高。

基本步骤:

1)在n个数据对象任意选择k(已经确定的)个对象作为初始聚类中心

2)计算每个对象与聚类中心的距离;并根据最小距离重新对相应对象进行划分3)重新计算每个聚类的均值作为新的聚类中心

4)循环(2)到(3)直到每个聚类不再发生变化为止(自己设定终止条件)

在编写程序过程中,我们为了得到比较满意的效果,对一些函数的参数进行了调试,如Canny算子中两个阈值,除去孤立点时参照数以及Hough变换缘检测中对应的参数

1、# param1的具体实现,用于边缘检测

canny = cv2.Canny(img, 400, 400);

2、res=del_dot(canny,15);

3、circles = cv2.HoughCircles(res, cv2.HOUGH_GRADIENT, 1, 50, param1=80, param2=30);

最终实现效果:

结果分析 

用OpenCV对硬币进行K-means聚类分析,运行速度快,部分结果准确;用Matlab程序计算分析运行速度慢,精准度不高。

工程源码分享:

链接:https://pan.baidu.com/s/12hV-8J5OmwTLCtpZ6TfgWg 
提取码:kemj

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/431678.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

涨点技巧: 谷歌强势推出优化器Lion,引入到Yolov5/Yolov7,内存更小、效率更高,秒杀Adam(W)

1.Lion优化器介绍 论文:https://arxiv.org/abs/2302.06675 代码:automl/lion at master google/automl GitHub 1.1 简单、内存高效、运行速度更快 1)与 AdamW 和各种自适应优化器需要同时保存一阶和二阶矩相比,Lion 只需要动量,将额外的内存占用减半; 2)由于 Lion…

港联证券|机器视觉迎重磅利好,5只概念股获两路资金加持

现在我国机器视觉在工业场景中的全体渗透率仍旧在10%以下,比照工业场景巨大的体量而言,机器视觉职业仍有较大开展空间。 近来*ST中潜收到广东证监局行政监管措施决定书。依据深交所的相关要求,公司应当在2023年1月31日前发表公司股票或许被停…

windows安装opencv-python(opencv-python源码安装)

因为我要开启opencv的GStreamer功能,这是和ffmpeg相类似的对视频流操作的一个功能,默认没有开启,需要手动编译。 安装方式链接: opencv-install-with-GStreamer 核心内容如下: git clone --recursive https://github.com/skvark/opencv-py…

数据结构_第十二关:二叉树的基础OJ题练习

目录 1.单值二叉树 2.相同的树 3.另一棵树的子树 4.反转二叉树 5.对称二叉树 6.二叉树的结构及遍历 扩展:如何判断是不是完全二叉树、二叉树的销毁 1)判断是不是完全二叉树 2)二叉树的销毁 1.单值二叉树 OJ题链接https://leetcode.…

传输协议特点大比拼之UDP

文章目录 前言一.UDP协议端的格式源端口号和目的端口号报文长度校验和 二.UDP的特点无连接面向数据报不可靠缓冲区 前言 本文将比较两种主要的传输协议 ,UDP的特点,以帮助读者更好地理解它们的应用场景和优缺点。 一.UDP协议端的格式 大家先来看一些UDP的报文格式…

企业应用程序单点登录

企业每天都依赖于各种企业应用程序,包括云和本地应用程序。这意味着用户必须经常输入更多密码才能访问这些应用程序并完成他们的工作。为了提高用户的工作效率、减少密码疲劳并使身份管理更有效,您的组织需要部署高效的 SSO 解决方案。 AD360 提供企业 …

[STM32F103C8T6]ADC转换

什么是ADC转换? ADC转换的全称是:Analog-to-Digital Converter,指模拟/数字转换器 ADC的性能指标: ADC分辨率: SSA与VREF-一起接到地,DDA与VREF接到3.3v,所以ADC转换的范围是0---3.3v 所以最后的…

计算机网络复习——第4章 4.2.3 4.2.4 4.3

4.2.3 IP 地址与 MAC 地址 IP地址:虚拟地址、软件地址、逻辑地址。 网络层和以上各层使用。 放在 IP 数据报的首部。 MAC地址:固化在网卡上的 ROM 中。硬件地址、物理地址。数据链路层使用。放在 MAC 帧的首部。IP 地址放在 IP 数据报的首部&#xff…

Windows命令提示符之常见命令--动态更新

序言: 在大家接触Windows电脑的过程中,一般是直接通过鼠标来进行操作,很少甚至没有用到过命令来执行操作,而想必大家都看过电影里面的黑客大神都是通过密密麻麻的指令来操作的,并且执行的速度也会比我们用鼠标块&…

【严重】Artifex Software Ghostscript 任意命令执行漏洞(POC已公开)(CVE-2023-28879)

漏洞描述 Artifex Software Ghostscript是美国Artifex Software公司的一款开源的PostScript解析器。 Artifex Ghostscript 10.01.0及之前版本中,如果写入缓冲区的数据比总长度少一个字节,则尝试写入转义字符,导致两个字节被写入。攻击者可通…

WPF入门(三)--事件Event调用

1、WPF应用程序的关闭 WPF应用程序的关闭只有在应用程序的 Shutdown 方法被调用时,应用程序才停止运行。 ShutDown 是隐式或显式发生,可以通过指定 ShutdownMode 的属性值来进行设置。 对ShutdownMode选项的更改,可以直接在App.xaml中更改&a…

酒店管理系统(Servlet+JSP)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例分…

【网络小知识】TCP协议介绍/三次握手,四次挥手的作用

前端开发人员需要了解三次握手和四次挥手的原因是,这些概念是在客户端和服务器端之间进行网络通信时所涉及到的 TCP 协议的基本知识。而对于前端来讲,如果页面中请求服务端数据时出现连接失败、延迟等问题,就需要对TCP协议中三次握手、四次挥…

VS——Visual Studio 2022 社区版——安装

VS——Visual Studio 2022 社区版——安装 下载安装官网下载:点击【免费Visual Studio 】即可下载安装界面:选择社区版 Community 安装先修改【安装位置】,选择【全部下载后安装】【工作负荷】选择 【使用C桌面开发】【语言包】点击【安装】&…

排序算法(二)

三、桶排序 先看定义: 桶排序会进行两次排序,一次将所有元素分配到不同的桶中,一次针对每个桶排序或再次排序所有元素。 练习题: 1) 力扣https://leetcode.cn/problems/top-k-frequent-elements/这道题就是非常典型…

NFS能使使用者访问网络上别处的文件就像在使用自己的计算机一样

先关闭selinux跟防火墙 安装NFS yum install nfs-utils -y 配置共享目录 mkdir /webdata 赋权 chmod 755 /webdata 修改配置文件 vim /etc/exports 换顺序启动 systemctl start rpc-bind systemct start nfs 测试 showmount -e 客户端挂载 创建共享目录 mkdir /we…

BUUCTF-rip

https://www.cnblogs.com/refrain-again/p/15001283.html 看了这个文章 我起码能理解我们栈溢出的目的 在做题之前 我们需要先理解 栈的存储方法 从上往下看 就能理解入栈 说回这道题目 为什么这道题目是栈溢出 1.查看基本信息 checksec file 是kali下的elf文件 相当于w…

ASEMI代理ADI亚德诺AD8061ARTZ-REEL7车规级芯片

编辑-Z AD8061ARTZ-REEL7芯片参数: 型号:AD8061ARTZ-REEL7 −3dB小信号带宽:320MHz −3dB大信号带宽:280MHz 0.1 dB平坦度的带宽:30MHz 斜率:650V/μs 总谐波失真:-77dBc 输入电压噪声&…

Kotlin | 这些隐藏的内存陷阱,你应该熟记于心

作者:Petterp 引言 Kotlin 是一个非常 yes 的语言,从 null安全 ,支持 方法扩展 与 属性扩展,到 内联方法、内联类 等,使用Kotlin变得越来越简单舒服。但编程从来不是一件简单的工作,所有简洁都是建立在复杂…

电子招标采购系统:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展

营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展 传统采购模式面临的挑战 一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标…