实时手写数字识别

2023-10-31

       PS:好久之前的博客了,再整理百度云的时候翻到了之前的代码,贴在这里:代码

 

手写数字识别作为模式识别领域的一个重要问题,也有着重要的理论价值,在大数据时代的背景下,其应用领域非常之广。很多学者对手写数字识别提出了不同的算法,取得了不错的测试效果,但如今OCR领域大部分还在算法理论的研究阶段,并没有完善的应用体系出现。部分科技企业开发出的手写数字应用系统由于局限于书写的环境和书写风格的要求,只能适用于特点的应用场景,也并没有得到很好的推广。

       本场景中,通过摄像头实时读取待处理的图像,经过灰度变换,转化为灰度图,经过图像的形态学膨胀和腐蚀做初步处理,并运用Sobels算子去除噪点。寻找轮廓后设定阈值分类图像,整合数字的特征,用训练好的KNN分类模型识别数字。提供自训练的API,按下执行命令后会识别到该场景下的识别图像,需要手动输入图像的标签,经测试,不同条件下的训练数据为6~8组即可较为精准的识别。

 

图1:场景一流程图 

(一):图像预处理(形态学膨胀腐蚀):
对图像做形态学腐蚀膨胀常用来做图像的预处理。其主要功能有:
• 消除噪声
• 分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素。
• 寻找图像中的明显的极大值区域或极小值区域
• 求出图像的梯度
在方案的设计中,首先做图像的腐蚀膨胀,以便于后面的边缘检测。效果如图:

  

图2:预处理——腐蚀膨胀

(二):基于Sobel算子的边缘检测:
Sobel算法是像素图像边缘检测中最重要的算子之一,在机器学习、数字媒体、计算机视觉等信息科技领域起着举足轻重的作用。在技术上,它是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度之近似值。在图像的任何一点使用此算子,将会产生该点对应的梯度矢量或是其法矢量。Sobel 算子是一个离散的一阶微分算子,用来计算图像灰度函数的近似梯度。算子使用两个3*3的矩阵和原始图片做卷积,分别得到横向和纵向的梯度值。如果梯度值大于设定的阈值,则认为检测到边缘点。

 

图3:Sobel算子使用的矩阵

对手写数字的图片用Sobel算子做边缘检测,综合其横向纵向的检测结果,如图:

 

图4:边缘检测

(三):数字提取分割与KNN识别:
将识别到的数字串分割成各个数字并框出,转换为特征矩阵作为KNN分类器的输入,由以训练好的KNN模型识别出数字标签,并标注在手写数字旁。如图:

   

图5:数字提取和识别结果

(四):手动训练API:
对于某些原因造成的识别错误,程序中,设定按u键手动更新训练,如图:

 

图6:待手动训练样本

界面将显示识别到的数字图片,标签手动输入,按enter后更新,更新2组后即可稳定识别:
 

图7:强化训练后的识别结果

       

视频演示截图:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实时手写数字识别 的相关文章

  • Linux MISC 驱动实验

    目录 MISC 设备驱动简介 硬件原理图分析 实验程序编写 修改设备树 beep 驱动程序编写 编写测试APP 运行测试 编译驱动程序和测试APP 运行测试 misc 的意思是混合 杂项的 因此MISC 驱动也叫做杂项驱动 也就是当我们板子
  • Docker使用docker compose部署zfile 实现在线浏览下载linux中的文件

    gt Docker及docker compose的安装点这里 创建 docker compose yml 文件 version 3 services zfile image stilleshan zfile container name z

随机推荐

  • Eudcoder--Java面向对象(第五章)- 包装类

    大家好啊 好久不见 新的一期来啦 让我们一起学习 快来 教你一个解除部分网课平台关于复制粘贴限制的方法 第一题 请仔细阅读右侧代码 根据方法内的提示 在Begin End区域内进行代码补充 具体任务如下 完成基本数据类型与包装类之间的相互转
  • echarts.common.min.js:22 Uncaught Error: Component series.bar  not exists. Load it first

    一 统计表无法显示 浏览器控制台报错 echarts common min js 22 Uncaught Error Component series bar not exists Load it first at Function Vn
  • 数据的存储方式(Parquet、ORC)

    文章目录 数据的存储方式 按行存储 按列存储 Parquest 文件布局 概念 并行处理的单元 配置 Row Group Size 行组的大小 Data Page Size 数据页的大小 元数据 数据页 Hive下的Parquet实验 Pa
  • postgresql:字符串累加拼接(聚合分组拼接)

    问题 有时 想要将某字段在查询列表的时候 按分组的不同 同组字符串累加拼接起来 原表数据内容如下 想要达到的目标结果 是把cdate tno的字符串分组累加拼接起来 如下 解决方案 使用聚合函数 string agg 示例如下 SELECT
  • 基于self-attention的BILSTM时间序列预测Python程序

    基于self attention的BILSTM时间序列预测Python程序 特色 1 单变量 多变量输入 自由切换 2 单步预测 多步预测 自动切换 3 基于Pytorch架构 4 多个评估指标 MAE MSE R2 MAPE等 5 数据从
  • 微信公众号测试号url和token绑定失败解决问题

    前提准备 在本地搭建一个本地服务器 具体查看如何搭建一个本地服务器 首先 我们需要到natapp获取一个信道 博主这里买的是vip1型的 当然也可以使用免费型的 根据需要选择 完了之后 去 我的隧道 查看购买的信道 复制里面的authtok
  • Java之包装类的算法小题的练习

    算法小题 练习一 需求 键盘录入一些1 10日之间的整数 并添加到集合中 直到集合中所有数据和超过200为止 代码示例 public class Test1 public static void main String args 键盘录入一
  • 修改Git远程地址 git config remote.origin.url "https://..."

    仓库管理 添加或指定远程仓库地址 git remote set url origin https git config remote origin url https 删除 git remote rm origin
  • python基础--函数入门与进阶

    函数入门与进阶 函数参数的使用 位置参数 关键字参数 默认参数 可变参数 关键字可变参数 函数的相互调用 函数的作用域 全局作用域 局部作用域 数据的打包与拆包 数据打包 数据的拆包 lambda函数 递归 前言 此专栏文章是专门针对Pyt
  • 高并发编程学习(2)——线程通信详解

    为获得良好的阅读体验 请访问原文 传送门 前序文章 高并发编程学习 1 并发基础 https www wmyskxz com 2019 11 26 gao bing fa bian cheng xue xi 1 bing fa ji chu
  • [Python图像处理] 九.形态学之图像开运算、闭运算、梯度运算

    该系列文章是讲解Python OpenCV图像处理知识 前期主要讲解图像入门 OpenCV基础用法 中期讲解图像处理的各种算法 包括图像锐化算子 图像增强技术 图像分割等 后期结合深度学习研究图像识别 图像分类应用 希望文章对您有所帮助 如
  • python设置坐标轴刻度值字体大小_python 设置xlabel,ylabel 坐标轴字体大小,字体类型...

    本文介绍了python 设置xlabel ylabel 坐标轴字体大小 字体类型 分享给大家 具体如下 coding utf 8 import matplotlib pyplot as plt 数据设置 x1 0 5000 10000 15
  • hdoj 1052 Tian Ji -- The Horse Racing 贪心算法

    这道题就是解决选择策略问题 思路一 先将田忌跟齐王的马的速度数组进行一次冒泡排序 1 如果田忌最慢的马比齐王最慢的马快 则比慢马 2 如果田忌最慢的马比齐王最慢的马慢 则用田最慢的马跟齐最快的马比 消耗齐的快马这是贪心的第一步 3 如果田忌
  • ElasticSearch 提示: NoNodeAvailableException[None of the configured nodes are available:

    ElasticSearch6 3 2 之java 客户端连接提示如下错误 NoNodeAvailableException None of the configured nodes are available 造成此问题的原因是 elast
  • 做自媒体,如何提高自己的创作能力,快速打造爆款?

    1 写作功底 首先在自己的文笔方面还是有一定的要求的 一定要保证自己的文章没有语病 有一定的逻辑性 要提炼出一定的观点 保证别人可以看得懂 主要就看你能不能长期写出吸引人的文章 写的文章深入人心 这样才会有粉丝 没粉丝的话账号是做不起来的
  • windows下ssh连续多次中转访问服务器

    准备工作 xshell下载地址 服务器A IP 192 168 0 1 服务器B IP 192 168 0 2 服务器C IP 192 168 0 3 用途 现有服务器A B C和客户端D 服务器A只能被客户端D访问 服务器B只能被服务器A
  • React 的 setState 立刻更新

    我们会发现其实 React 的 setState 方法是一个异步的方法 React 会将所有的 setState 方法打包成一次进行更新 类似于快递点寄快递 囤积了一些包裹后一次投递 而不是你每次修改 state 都会进行更新 这样的设计主
  • BAT大厂陆续裁员,2023,还能入职大厂吗?

    2022年 陆续传出了京东 字节 阿里 腾讯等大公司裁员的消息 让人有点看不懂的是 裁员过后 却是各大公司继续招人的消息 一边招一边裁 这是什么 玩法 鲶鱼效应告诉我们 活力来源于竞争 来自于压力和挑战 若不淘汰那些学习能力弱 技术提升慢
  • 程序设计思维 week9 作业B-东东学打牌

    目录 题目 Input Ouput Sample Input Sample Ouput 思路 代码 总结 题目 所有扑克牌只按数字来算大小 忽略花色 每张扑克牌的大小由一个值表示 A 2 3 4 5 6 7 8 9 10 J Q K 分别指
  • 实时手写数字识别

    PS 好久之前的博客了 再整理百度云的时候翻到了之前的代码 贴在这里 代码 手写数字识别作为模式识别领域的一个重要问题 也有着重要的理论价值 在大数据时代的背景下 其应用领域非常之广 很多学者对手写数字识别提出了不同的算法 取得了不错的测试