点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

使用OpenCV对0到9数字进行识别,实现简单OCR功能,基于CA(轮廓)分析实现特征提取,基于L1距离计算匹配实现数字识别。在排除干扰的基础上,识别精度可以达到98%以上。整个算法分为两个部分,第一部分是特征提取,提取的特征实现了尺度不变性与轻微光照与变形干扰排除,第二部分基于特征数据进行匹配实现了相似性比较,最终识别0到9十个数字。

第一部分详解:

算法的第一部分主要是实现以下功能,提取42个特征向量,用其中40个向量做匹配识别,另外两个向量做辅助检查。比如0跟1的横纵比有明显差别。特征提取的主要步骤如下:

1. 图像去噪声与二值化 2. 轮廓发现与ROI区域分割 3. 水平与垂直投影,提取20个向量,并归一化 4. 网格分割5x4,提取20个向量,并归一化 5. 宽高比与空白比,总计42个向量提取完成

预处理通过高斯模糊去噪声,然后通过全局阈值实现图像二值化,使用轮廓发现提取ROI矩形区域,对每个区域完成3~5步,实现特征提取,其中水平与垂直投影演示如下:

对ROI区域的水平与垂直投影分别分成10个BIN,考虑到浮点数划分,每个BIN长度不一定是整数,这样就通过权重进行按比例分割像素点。完成每个BIN的前景像素点统计。

同样对数字ROI区域实现5x4的网格分割,每个Cell计算前景像素个数,也会借助权重比例进行分割,最终得到归一化之后的20个特征向量。

这样得到的40个特征向量具有放缩不变性与轻微抗干扰变形能力。

第二部分详解:

运行截图:

训练数据:

输入数据:

识别结果:

观察结论

训练数据和识别数据在字体、大小上均有差异,然而根据提取的特征进行匹配,均可识别,充分证明了本识别算法的尺度不变性与局部抗干扰能力。

执行代码

int main(int argc, char** argv) {Mat src = imread("D:/vcprojects/images/td1.png");if(src.empty()) {printf("could not load image...\n");return-1;}namedWindow("input image", CV_WINDOW_AUTOSIZE);imshow("input image", src);// 训练train_data();// 测试test_data();waitKey(0);return0;
}

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

OpenCV实现0到9数字识别OCR相关推荐

  1. OpenCV-Python中的简单数字识别OCR

    本文翻译自:Simple Digit Recognition OCR in OpenCV-Python I am trying to implement a "Digit Recogniti ...

  2. 手把手教你使用LabVIEW OpenCV DNN实现手写数字识别(含源码)

    文章目录 前言 一.OpenCV DNN模块 1.OpenCV DNN简介 2.LabVIEW中DNN模块函数 二.TensorFlow pb文件的生成和调用 1.TensorFlow2 Keras模 ...

  3. 基于OpenCV的 SVM算法实现数字识别(四)---代码实现

    三.基于SVM算法实现手写数字识别 作为一个工科生,而非数学专业的学生,我们研究一个算法,是要将它用于实际领域的.下面给出基于OpenCV3.0的SVM算法手写数字识别程序源码(参考http://bl ...

  4. OpenCV SVM支持向量机和KNearest数字识别的实例(附完整代码)

    OpenCV SVM支持向量机和KNearest数字识别的实例 OpenCV SVM支持向量机和KNearest数字识别的实例 OpenCV SVM支持向量机和KNearest数字识别的实例 #inc ...

  5. 不同大小的宋体0~9印刷体数字识别分析结果

    不同大小的宋体0~9印刷体数字识别分析结果 1.选取10个数字中形状特征最典型的几个 图1- "1"和"4" 如图1所示,在10个数字中"1" ...

  6. 基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕实战

    基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕实战 基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕 前言 运行python环境 ...

  7. 使用OpenCV的ANN_MLP神经网络实现数字识别

    前言 1.OpenCV中的ML模块实现了前馈人工神经网络,具体地说是多层感知器(MLP),是最常用的神经网络类型. MLP由输入层,输出层和一个或多个隐藏层组成. MLP的每一层包括一个或多个与来自上 ...

  8. [机器学习]基于OpenCV实现最简单的数字识别

    http://blog.csdn.net/jinzhuojun/article/details/8579416 本文将基于OpenCV实现简单的数字识别.这里以游戏Angry Birds为例,通过以下 ...

  9. OpenCV+TensorFlow图片手写数字识别(附源码)

    初次接触TensorFlow,而手写数字训练识别是其最基本的入门教程,网上关于训练的教程很多,但是模型的测试大多都是官方提供的一些素材,能不能自己随便写一串数字让机器识别出来呢?纸上得来终觉浅,带着这 ...

最新文章

  1. 推荐一个不错的开源在线HTML编辑器
  2. Linux之文档与目录结构
  3. ajax数据保存及解析
  4. SpringBoot 扫描包
  5. python装饰器class_PYTHON里的装饰器能装饰类吗
  6. 数据库本地的sa有个叉号_多个客户端(50)同时使用sa账号操作服务器数据库(sqlserver)会有问题吗?...
  7. 试题3 基础练习 数列排序
  8. VisualVM初次使用BTrace功能方法步骤
  9. ARCGIS操作教程学习
  10. java中Map,List与Set的区别
  11. php函数体用return,php递归函数使用return问题
  12. 姜成转载:站群的操作方法
  13. Python的pyhanlp库使用(自然语言识别、姓名)
  14. 华众 mysql_华众虚拟主机管理系统HZhost三大常见错误!
  15. CentOS8.5系统访问限制
  16. android 流畅动画svg,android svg动画
  17. 软件发布各版本代号含义
  18. 《惢客创业日记》2021.08.28-31(周六)一错即否、一善俱荣(三)
  19. win10 who owns this pc? My organization I own it
  20. vue封装qq表情包和符号表情的发送

热门文章

  1. 如何用Python快速抓取Google搜索?
  2. 飞机的“黑色十分钟”能被人工智能消灭吗?
  3. 网易有道周枫:AI正带来革命性变化,但在线教育的核心是内容
  4. Spring Cloud Gateway CORS 方案看这篇就够了
  5. 干掉zookeeper:kafka里程碑式改进,牛逼!
  6. 详解微服务技术中进程间通信
  7. PageHelper 在 Spring Boot + MyBatis 中合理且规范的使用方法
  8. 面试官:你分析过mybatis工作原理吗?
  9. 【NLP】为什么中文分词比英文分词更难?有哪些常用算法?(附代码)
  10. 中科院团队用算法追上谷歌“量子霸权”:谷歌量子处理器并没有比E级超算快...