欢迎点击「算法与编程之美」↑关注我们!
本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
1.为什么需要电脑对图片中的数字和字将进行识别:
在生活中,很多时候需要识别一些图片中的数字和字母,就像很多网站的验证码识别,对于个人来说,单个的此类事件需要的时间和精力很少,可对于一些机构、企业来说,可能就需要重复很多次(例如某些机构需要向某网站提交多次文档、申请多次访问等操作)。
这时,大量的此类工作对于人眼的损耗较大,不但需要损耗人力,同时由于眼花和疲劳等原因可能会导致读取出来的信息出现差错,从而降低效率
。所以,就需要使用电脑来执行这一操作。
2. python 实现的原理和步骤:
2.1环境搭建:
需要python安装opcv、numpy、pil和pytesseract这几个第三方库;
2.2基本原理介绍:
通过图像的预处理操作后,再将读取出来的数组转换成image形式,然后提取图片的有用信息。
2.3方法步骤简介:
首先是图片的预处理操作,一般顺序为先进行图像的二值化,之后再对图片进行数字形态学运算(主要是开运算),由于pytesseract内置函数识别的图片是image形式而不是opencv中的多维数组形式,所以在识别之前需要先使用pil中的image函数将图片格式进行转换,最后再通过pytesseracr中的函数进行识别。
大致简单代码如下:
import cv2 as cv import numpy as np from PIL import Image import pytesseract as tess #构造函数 def recognize_text(): #灰度化图像: gray = cv. cvtColor(src, Cv. COLOR_BGR2GRAY) #二值化图像: ret, binary = cv. threshold(gray, 0 ,255, cv. THRESH_BINARY_INV | cv. THRESH_OTSU) #开运算: kernel = cv. getstructuringelement(cv. MORPH_RECT, (1,2))#使用1*2的面积元素 bin1 = cv. morphologyEx(binary, cv. MORPH_OPEN, kernel) kernel = cv. getstructuringelement(cv. MORPH_RECT, (2,1))#使用2*1的面积元素 open_out = cv. morphologyex(bin1, cv. MORPH_OPEN, kernel cv.bitwise_not(open_out, open_out)#将图片背景转换为白色 #转换图片格式 textImage = Image. fromarray(open_out) #读取信息 text = tess. image_to_string(textImage) print(text) sre cv. imread("图像路径") cv. namedWindow("input image". WINDOW_AUTOSIZE) cv. imshow("input image", sre) #调用函数 recognize_text(src) cv.waitKey(0)
|
2.4总结:
上述步骤和代码只是一个基本思路和例子,具体步骤代码还需要结合图片的具体情况,有的图片可能不需要开运算就可以直接进行后面的操作,也有一些图片需要进行多次开运算的处理,所以还需要结合实际情况进行调整后使用。
主 编 | 张祯悦
责 编 | 饶龙江
where2go 团队
微信号:算法与编程之美
长按识别二维码关注我们!
温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!
文章目录前言题面D1T1([SCOI2018] 树)D1T2([SCOI2018] Numazu 的蜜柑)D1T3([SCOI2018] 星际迷航)D2T1([SCOI2019] RGB)D2T2([SCOI2018] 游泳池)D2T3([SCOI2018] ABNS)题解D1T1D1T2D1T3D2T1D2T2D2T3前言其实这玩意就是缝合怪……D1 考的是 SCOI2018 的 D1D...
vmware workstation 16 可以顺利安装的,到了实体机就有些麻烦了。需要 TPM ,8代以上CPU搜一下许有多相关文章,但是我手黑,无一成功。包括一下几种:替换DLL文件BIOS设置 securit boot安装器PE引导修复考虑到泄露版也不是正式版,不值得花太多功夫。外挂硬盘,直接用 RUFUS 安装成 WindowsToGo,一次成功!大概思路就是WTG跳过了安装过程,直接进入初始配置。...
机器人开发--编码器1 概述2 编码器介绍2.1 编码器定义2.2 编码器分类1 按码盘的刻孔方式不同分类(1)增量型(2)绝对值型(3)混合型2 按信号的输出类型分为3 以编码器机械安装形式分类4 以编码器工作原理可分为光学编码器磁编码器感应式电容式电涡流式旋变式2.3 主要厂家其他ABI(ABZ)信号和UVW信号PWM信号参考1 概述2 编码器介绍日系伺服厂家,一般将编码器、伺服驱动器、电机成套打包提供给客户;类似华为一样,软硬件自己搞,可以极限榨取硬件性能,构造自己的生态。如,安川、松下、三菱
reflow:回流 回流:指计算页面布局。render tree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建。这就称为回流,每个页面至少需要一次回流,就是在页面第一次加载的时候。 repaint :重绘 重绘:当render tree中的一些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,比如background-color。则就叫称为重绘。
杭电oj1018(Big Number)Problem DescriptionIn many applications very large integers numbers are required. Some of these applications are using keys for secure transmission of data, encryption, etc. In t...
注册表(registry)原意是登记表,是Windows里的一个重要数据库,用于存储系统和应用程序的设置信息,就像户口本上登记家庭住址和邮编信息一样。如果一个人户口本上内容丢失,那么他在户籍管理系统上就成了一个不存在的人。Windows也是一样,如果注册表上的环境信息或者驱动信息丢失,就会造成...
IOCIOC全名是inversion of control ,就是反转控制,也叫控制反转,其实它也不是听得那么高达上,其实就是一种思想,之前我们创建类后需要new对象,对象的创建的控制权是在我们程序员的手上,现在我们将创建对象的权力交给spring,我们不需要知道对象是如何创建的,只知道需要向spring要对象使用就行,这样提高了开发的效率这种将创建对象的权力交给spring的思想就是反转控...
python构造函数和析构函数1、构造方法的使用 很多类都倾向于将对象创建为有初始化状态.因此类可以定义一个名为init()的特殊方法(构造方法)来实例化一个对象。 构造方法也叫做构造器,是指当实例化一个对象(创建一个对象)的时候,第一个被自动调用的方法。 演示1:构造方法被调用的契机class Person(): #构造方法 def __init...
1.man ( manual : 获得帮助信息 )命令格式: man [命令或配置文件] ·查看配置文件时不需写其绝对路径例: 查看ls命令的帮助信息 man ls ·查看时输入 /-l ,可高亮关键字-l例: 查看配置文件services的帮助信息 man services 例:查看passwd 配置文件的帮助 man 5 passwd2.whatis ( : 查看命令的简短信息 )命令格式: whatis [命令]3.apropos ( : 查看配置文件
上班怎能表现的不出众呢?从头开始吧,为你推荐几款特有职业范的发型,保证让你在众人面前眼睛一亮!职场发型推荐职场长发一:偏分的造型设计可是最显女生的优雅气质风的了,再搭配时尚的深棕色当要颜色与丰盈的长卷发造型更添职场女生的优雅淑女风。职场长发二:利用的是一九分的露额发型将女生精致的五官完美的呈现出来,再搭配时尚的棕色头发颜色与侧边丰盈的长卷发更添职场女生的优雅干练风。职场长发三:利用的是明亮的橘黄色...
oTMS联合创始人兼COO段琰CNET科技资讯网 4月22日 北京消息:传统物流信息化行业正在被颠覆。4月21日,oTMS的联合创始人兼COO段琰表示:“传统物流行业有望搭上互联网化的‘快车’并实现转型升级。如果说‘微信连接人’,那么‘oTMS连接运输’。”物流信息化遇上“互联网+”在段琰看来,运输在实际工作中与互联网的原理非常类似,都...
本系列文章由zhmxy555(毛星云)编写,转载请注明出处。http://blog.csdn.net/zhmxy555/article/details/7688515作者:毛星云 邮箱: [email protected] 这节笔记主要讨论DirectX 11现有的组件构成,随着DirectX各个版本的更新被时代抛弃的一些组件以及第一个围绕着DirectX 11 的Demo创建全过