opencv threshold_基于深度学习OpenCV与python进行字符识别

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

重磅干货,第一时间送达7ec718b0ae7734b5885afdfec61121e2.png

当我们在处理图像数据集时,总是会想有没有什么办法以简单的文本格式检索图像中的这些字符呢?今天我们就一起看看有没有什么简单的办法可以实现这一功能~对于字符识别,我们找到了一些在线工具可以使用,他们将获取用户的输入并提供输出信息。

字符识别:

字符识别程序有助于准确的从文本中识别出每个文本元素。

通过应用深度学习算法,可以准确的识别图像中字符或文本元素的并对其进行分类。这些字符一般有很大区别。

当我们使用普通技术来识别字符时,可能会在特定点上出现一些错误。如果我们使用基于深度学习的OpenCV算法将给出有效的输出。

对于运行模型的必须安装由Google作为光学字符识别引擎开发的tesseract。

pip install pytesseract

OpenCV:

OpenCV是一种一项基本技术,我们主要利用他来消除的噪声以便进一步执行数据操作。

Open CV是深度学习技术领域中使用最广泛的算法。

它极大地依赖于受过训练的数据,并有助于识别图像中存在的文本。开放式简历使算法丢失的准确性变成一幅图画。灰度等级在字符识别领域提供了有效的分类。因此,我们特此导入所有必要的软件包,以使我们的模型可以正常使用。

为了在您的本地计算机上安装OpenCV,请使用以下命令...

pip install opencv-python

图像可以直接读取到代码中吗?

• 让我们讨论影响识别字符的因素:

• 图像中的噪声会导致许多错误识别字符的因素。为了确保无噪音,我们在代码中消除了识别。

• 当图像不是高分辨率时,识别将失败。因此,为了获得准确的结果,最好拍摄高分辨率的图像。

• 有时图像的角度也会出现缺陷。

• 在假定文本时,图像的反射会导致错误。如此多的字母“ F”被识别为“ P”。

• 如果代码无法训练字体,字体也会改变结果。

• 各种图像具有本领域的各种表示风格,因此,当存在更多肤色或多种颜色时,会对图像中的识别文本做出不正确的假设。

考虑到以上所有因素,必须在所有测试用例通过的地方相应地构建代码。

使用OpenCV识别字符的Python代码:

导入所有软件包:
#import all the packagesimport cv2import numpy as npimport pytesseractfrom PIL import Image
使用软件包安装后,将其导入代码。声明或初始化路径:tesseract是一种开源工具,可以从网上下载。下载后,请提及其路径,如下所示。
# path of pytesseract execution folder pytesseract.pytesseract.tesseract_cmd = 'C:\Program Files\Tesseract-OCR\tesseract.exe'# Path of imagemain_path = r'qu12.png'
主要方法:在这部分代码中,我们正在实现• 读取图像• 灰度图像• 进行膨胀和腐蚀以消除图像中不需要的噪声。• 去除噪点后写图像。• 应用阈值以获取唯一的黑白图片。• 写入相同的图像以进行进一步的识别过程。• 使用Tesseract进行字符识别。
def get_string(pic_path):   # Reading picture with opencv   pic = cv2.imread(pic_path)# grey-scale the picture   pic = cv2.cvtColor(pic, cv2.COLOR_BGR2GRAY)# Do dilation and erosion to eliminate unwanted noises   kernel = np.ones((1, 1), np.uint8)   pic = cv2.dilate(pic, kernel, iterations=20)   pic = cv2.erode(pic, kernel, iterations=20)# Write image after removed noise   cv2.imwrite(main_path + "no_noise.png", pic)#  threshold applying to get only black and white picture    pic = cv2.adaptiveThreshold(pic, 300, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 31, 2)# Write the image for later recognition process    cv2.imwrite(main_path + "threshold.png", pic)# Character recognition with tesseract   final = pytesseract.image_to_string(Image.open(main_path + "threshold.png"))return final

显示最终输出:

print(get_string(src_path))

输入和输出:

在这里,我们给出输入到代码中的输入和输出,以便稍后执行代码。

输入:

c1a6a74ed29f3e7db9f82de5d6031d9f.png

从互联网上获取样本识别

输出:

9c0584988967bfb688393e863a4bb5d3.png

执行代码后的屏幕截图

代码链接:https : //github.com/eazyciphers/deep-learning-tutors

参考文献:

https://www.researchgate.net/profile/Andrew_Agbemenu/publication/325223548_An_Automatic_Number_Plate_Recognition_System_using_OpenCV_and_Tesseract_OCR_Engine/links/5c87e7ea299bf14e7e781750/An-Automatic-Number-Plate-Recognition-System-using-OpenCV-and-Tesseract-OCR-Engine.pdf

 https://en.wikipedia.org/wiki/Tesseract_(software)

交流群

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

f4f18bdb0e567c21062d6d0088ff3a8c.png

b64af8f4a6be66413917768ce126cdc9.png

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

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

相关文章

python3 robotframework+pycharm框架搭建

1.安装python3 框架组成:自动化基础库(robotframework)图形界面(robotframework-ride) 2.安装RF框架 安装robotframework。pip install robotframework -i https://pypi.doubanio.com/simple 安装robotframework-r…

delphi if多个条件_判断(if)语句

判断(if)语句目标开发中的应用场景if 语句体验if 语句进阶综合应用01. 开发中的应用场景生活中的判断几乎是无所不在的,我们每天都在做各种各样的选择,如果这样?如果那样?……程序中的判断if 今天发工资: ​…

excel sheet限制_Python 处理Excel内的数据(案例介绍*3)

点击上方“蓝字”关注我们了解更多精彩案例一介绍现在有一批电商产品跟当日销量的数据,如下,总共有上万笔的数据,现在需要统计每个品牌当日的销售量,比如美宝莲今天总共卖出了多少的商品,另外需要统计每个品牌下面的每…

robotFramework-ride使用2-分支与循环

1条件运算 Run keyword if 如果条件为True,则执行关键字 ELSE IF ELSE IF使用案例1: 2循环 在使用append to list前,添加Collections库 列表元素添加与删除 列表元素求和-循环 :FOR ${i} IN 1 2 3 4 5 :FOR ${i} IN RANGE 1 5FOR里面…

项目案例:在线拍卖系统_冀拓公司在张家口开展尾矿库在线监测监控系统 建设项目...

近日,受张家口弘锦矿业有限责任公司委托,冀拓公司在弘锦矿业大东沟尾矿库开展了安全风险智能在线监测监控系统施工安装服务。由于该库为“头顶库”,按照省应急管理厅要求“头顶库”必须在6月底之前完成联网,在6月24日接到项目任务…

Linux 两台服务器之间传输文件和文件夹

今天处理一个项目要迁移的问题,突然发现这么多图片怎么移过去,可能第一时间想到的是先从这台服务器下载下来,然后再上传到另外一台服务器上面去,这个方法确实是可行,但是实在是太费时间了,今天我就教大家怎…

arm汇编指令集_1. 从0开始学ARM安装Keil MDK uVision集成开发环境

关于ARM的一些基本概念,大家可以参考我之前的文章:《0.到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc?一文帮你梳理基础概念【科普】》0. 如何学习arm?ARM的知识点很多很杂,很多同学都遇到过类似的问题&#xff0…

32位存储环境下整数范围为什么是[-2^31,2^31-1]?

一、概念:存储单位 1.“位”是数据存储的最小单位。在计算机中的二进制数系统中,位,简记为bit,也称为比特,每个0或1就是一个位。 2.“字节”是计算机信息技术用于计量存储容量的一种计量单位,通常情况下,…

mysql5.7配置用户名密码_MySQL57安装图解

原文:MySQL57安装图解_ma524654165的博客-CSDN博客作者: ma524654165MySQL57安装图解、、、0-需要准备的安装包1在百度下载MySQl开始安装下载的MySQL勾选同意点击Next4选择Server only5点击execute继续6点击next7直接next8配置服务器的端口-默认9设置一个…

vc6.0添加注释快捷键

第一步:工具 第二步:点击定制(Customize)-键盘-All commands-选择CommentOut,在新建快捷键处填写Ctrl/。

python 释放内存_学了4年C++后,我转向了Python

作者 | asya f 编译 | Lisa C 已经学不动了,现在换 Python 还来得及吗?一位四年工作经验的 C 程序员亲述转型历程,这不仅仅是语言上的转变,而是代码思维甚至工作环境的转变。 通常,程序员会认为 Python 编码比较简单&a…

2021-03-07

一、安装和使用Anaconda 1、anaconda是什么? Anaconda在英文中是“巨蟒”的意思,与python的意思相近,它是python的包管理器和环境管理器。 2、为什么需要安装anaconda? 原因有以下几点: 附带一大批常用的数据科学…

python如何实现模拟登录_超详细的Python实现新浪微博模拟登陆(小白都能懂)

最近由于需要一直在研究微博的爬虫,第一步便是模拟登陆,从开始摸索到走通模拟登陆这条路其实还是挺艰难的,需要一定的经验,为了让朋友们以后少走点弯路,这里我把我的分析过程和代码都附上来。 首先,我们先用…

wacom mac驱动_MAC系统装Wacom手绘板的方法及注意事项

⚠️注意事项⚠️:一般Wacom官网的驱动会比苹果最新系统更新慢很多,所以如果你是最新系统,那官网的驱动你目前肯定用不了!要找客服去单独要。电话:4008105460 如果你刚好是老系统,那么恭喜你~?…

linux mplayer_移植mplayer播放器到EK200开发板的步骤浅析

mplayer是一款开源多媒体播放器,以gnu通用公共许可证发布此款软件可在各主流操作系统使用,一方面它资源占用率低;另一方面,无论是音频还是视频方面,它支持的格式相当全面,能支持播放大部分的音频、视频格式…

printf格式字符串和输出列表个数及类型不匹配案例

printf函数不会进行任何类型转换(包括隐式转换),它只是从内存中读出你所提供的元素的值(按照%d,%f等控制字符提示的格式) void main() {int i10.0/3;float j10.0/3;printf("%d\n",i); //3printf…

脚本自动定时打开链接_自动化构建系统

在软件开发过程中,特别是在一些大型多人合作开发的项目中,如何将各个人开发的不同模块集合为一个完整的系统,最终输出一个完整的目标文件,这个过程包括编译,发布,自动化测试等环节。这一过程的完善程度和流…

++ba--运算结果解析

int db&&a--; 此运算其实的操作为&#xff1a; db&&a,然后aa-1,所以d0&#xff0c;a-1. #include<stdio.h> void main() {/*double a97.3;double b98;double c;int c1;printf("%d\n",(int)(a/b));printf("%f",a/b);*/int a0,b2,…

python docker_Docker实践:python应用容器化

一、前言 容器使用沙箱机制&#xff0c;互相隔离&#xff0c;优势在于让各个部署在容器的里的应用互不影响&#xff0c;独立运行&#xff0c;提供更高的安全性。本文主要介绍python应用&#xff08;django&#xff09;跑在docker容器里&#xff0c;编写dockerfile实现镜像构建自…

mysql 默认事务隔离级别_上个厕所的功夫,搞懂MySQL事务隔离级别

“隔离级别” 出于MySQL四大特性(ACID)中的“I”&#xff0c;也就是隔离性。目的是实现数据、事务一致性“C”。MySQL在多线程并发场景下&#xff0c;可能会出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)这类并发问题&#xff0c;为了解决这些问…