本文简单介绍图片字符识别的原理,主要识别图片中的数字,其他字符识别原理类似。

大家应该知道,对于人类来说,可以很容易理解一张图片所表达的信息,这是人类视觉系统数万年演变进化的结果。但对于计算机这个诞生进化不到百年的 “新星”,要让它理解一张图像上的信息是一个复杂的过程。计算机理解图像是一个数字计算比较的过程。

如图,我们一目了然的识别的图像中的数字,如何让计算机识别下图中的数字呢?

环境:VS2015+openCV3.4.0

要识别图像字符,首先需要模版库。对于识别简单字符,可自己训练,也可网上下载数据集。笔者这里就直接用提前做好的(用photoshop制作,字体和字大小尽量和待识别字符相近,不然影响识别率),为便于识别,模版名就以数字命名。

1. 图片预处理。首先读取待识别图像,灰度化、二值化。

Mat srcImg = imread("H:\\test.jpg",CV_LOAD_IMAGE_GRAYSCALE);//打开图片

灰度后图像:

threshold(srcImg, srcImg, threshVal, 255, CV_THRESH_BINARY);//二值化

我们知道图像本身就以数字进行存储的,二值化后图像就只有两个值0和255.

例数字0:

注意二值化的阈值根据图像实际情况进行调整。

二值化图像后:

2. 图像分割。我们需要将图像中的字符分割开。整个过程分两部,左右分割和上下分割。基本思想是,从图像的左上角第一列开始,从左往右逐列扫描扫描,当遇到像素值为0时,记录该列号sCol,继续扫描再遇到整列像素值为255时,记录列号eCol,sCol与eCol之间即为字符所在区间。复制二值图该区域,这样完成了左右分割;

将左右分割后,在此基础上再对图像进行上下分割,同理,从图像左上角第一行,向下逐行扫描,当遇到像素值为255时,记录该列号sRow,继续扫描再遇到整列像素值为0时,记录列号eRow,sRow与eRow之间即为字符所在区间。复制该区域,这样完成了上下左右分割。

3. 识别。把切割后的数字图片大小调整到和模板一样的大小(一般以模版中最大尺寸),然后让需要匹配的图和别和10个模板相减(让两个图片对应坐标像素点值相减),将所有差的绝对值求和 。

最后与哪个模板匹配时绝对值和最小,则就可以得到图像与该模版最匹配,进而识别该字符。

4. 结果。

数字图像字符识别——数字识别相关推荐

  1. 【印刷字符识别】基于matlab OCR印刷字母+数字识别【含Matlab源码 1861期】

    ⛄一.OCR简介 OCR技术是光学字符识别的缩写, 是通过扫描等光学输入方式将各种票据.报刊.书籍.文稿及其它印刷品的文字转化为图像信息, 再利用文字识别技术将图像信息转化为可以使用的计算机输入技术. ...

  2. 计算智能学习2_BP神经网络原理_数字识别_字符识别_matlab实现

    文章目录 人工神经网络的基本结构 BP神经网络原理 实验部分(matlab实现) 一.需求分析 二.概要设计 三.详细设计(代码) 四.实验结果总结 代码下载 人工神经网络的基本结构 人工神经网络的互 ...

  3. 教程 | 基于LSTM实现手写数字识别

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 基于tensorflow,如何实现一个简单的循环神经网络,完成手写 ...

  4. fpga驱动rgb液晶屏_正点原子开拓者FPGA开发板资料连载第五十四章基于的数字识别实验...

    1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者FPGA开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://www.o ...

  5. 基于matlab数字识别算法系统设计与实现(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 目 录 内容摘要------------------------------1 关键字----- ...

  6. 【毕业设计_课程设计】手写数字识别系统的设计实现(源码+论文)

    文章目录 0 项目说明 1 系统概述 1.1 系统实现环境 2 研究方法 2.1 图像预处理阶段 2.2 特征提取阶段 2.3 数字识别阶段 3 研究结论 4 论文概览 5 项目工程 0 项目说明 手 ...

  7. 毕业设计 手写数字识别算法研究与实现(源码+论文)

    文章目录 0 项目说明 1 系统概述 1.1 系统实现环境 2 研究方法 2.1 图像预处理阶段 2.2 特征提取阶段 2.3 数字识别阶段 3 研究结论 4 论文概览 5 最后 0 项目说明 手写数 ...

  8. java实现 手写体识别_java手写体英文数字识别系统 识别预处理如何实现 采用什么语言比较好...

    展开全部 转载 1 引言 手写体数字识别是文字识别中的一个研究课题,是多年来的研究热点,也是模62616964757a686964616fe4b893e5b19e31333337373638式识别领域 ...

  9. 基于BP神经网络的手写体数字识别matlab仿真实现

    目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 文字.数字识别是一个典型的模式识别问题,也是模式识别中一个非常重要的应用领域.在文字.数字识别系统中,手写体的文字与识别是一个较难的领域, ...

  10. OpenCV实现0到9数字识别OCR

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 使用OpenCV对0到9数字进行识别,实现简单OCR功能,基于CA ...

最新文章

  1. LLVM与Clang局部架构与语法分析
  2. dlib人脸比对算法代码java,Python 使用dlib 5行代码实现人脸比对
  3. Oracle高级查询
  4. 基于Java的RDMA高性能通信库(二):Java Socket Over RDMA
  5. [architecture]-CPU(ARM)启动的第一条指令
  6. 如何处理error message Invalid parametertype used at function XXXX
  7. linux at查看进程命令,at命令 - Linux命令大全 | linux教程
  8. PWN-PRACTICE-BUUCTF-4
  9. X86,X86_32,X86_64
  10. java swing有趣编程_java(swing编程)如何这个简单效果?
  11. win11快捷键常用表 最全面的win11快捷键使用指南
  12. selenium反爬
  13. 电脑远程链接怎么删除计算机,删除远程桌面连接记录的方法
  14. 北航单片机李广弟c语言还是汇编,单片机基础备课笔记
  15. TPSHOP商城软件测试环境搭建过程
  16. 目标端的trail文件损坏或误删除,如何重新进行抽取
  17. 中国信通院:2017年Q3共享单车行业发展指数报告(附下载)
  18. linux资料整理之用户管理
  19. 天荒地老修仙功-第六部第二篇:Spring Cloud Eureka自我保护机制
  20. 【单片机项目】基于STM32的智能小车设计(三)软件设计

热门文章

  1. 网站建设中做到需求分析细致,网站优化也就顺理成章了
  2. 使用8、14、20节点6面体的立方体弹性固体的三维分析(python,有限元)
  3. Hadoop三大发行版本简单介绍
  4. 软件测试,AutoRunner错误:license invalid,error code=-8
  5. R语言数据可视化案例(世界杯球员信息数据可视化)
  6. 计算机病毒知识 360回答,计算机病毒与反病毒技术 课后习题答案
  7. 计算机仿真系统模型有,计算机仿真在光伏发电系统模型中的应用研究原稿(最终定稿)...
  8. Android 文件选择/文件管理
  9. 通达oa服务器文件夹管理,通达OA办公系统软件功能介绍.doc
  10. 计算机游戏优化,Win10电脑玩游戏优化方法!必须关闭这几个设置,效果提升巨大...