上一篇文章中我们带领大家制作了一个简易的OCR图片文字识别工具,但是,程序还有一些需要我们进一步完善的地方。比如,我们在识别文字后,如果想对照原始图片对处理的文字进行修正操作,我们还要打开图片,然后在图片浏览器和我们的程序之间切换,以便完成我们的需求。有没有更好的办法呢?当然有咯,在程序中增加一个显示图片的功能。这样,我们在进行修正文字错误时,可以对照图片进行检查。怎么样?是不是很酷?现在我们来实现一下这个功能吧……

增加图片显示功能会更方便哦

【分析】

需要增加的是显示图片的功能,我们需要做下面的前期准备工作。

前期准备很重要哦

我们知道,Python的tkinter控件中有很多控件是可以用于显示图片的,只要是控件有image属性的,基本上都可以用于实现这一功能。比如,Label、Button等控件,程序中我们使用Label控件进行显示。再者,如果在Label控件中显示图片,我们一般是将图片转化为PhotoImage类,但是tkinter默认的PhotoImage类只能打开诸如gif、png一类的图片,打开其它类型的图片一般会抛出异常。我们知道,网上下载的图片一般jpg、gif、png等等各种类型,因此,我们需要第三方库支持。程序中我们使用PIL模块中的Image和ImageTk类来创建图像类,这两个类基本可以处理常见的图像类型了。最后,我们需要知道,每一个可以布局的控件都有一个pack_forget()方法,用于暂时不显示该控件。但是这个控件一旦创建还是存在于内存中的。如果需要,我们就使用pack()方法对控件进行显示。知道了这三点内容,我们就可以实现程序了。在此之前,需要安装第三方库PIL,使用pip install pillow进行安装即可。【程序实现】

废话不多说,我们直接开始编码吧,对于重复的代码,本篇不再展示,主要记录一下跟上一篇《使用Python制作一个简易的OCR图片文字识别工具》不同的新增加的代码。

首先导入模块: from PIL import Image, ImageTk

我们在类变量的初始化代码中增加下面标注的几行内容,如图所示。

变量初始化新增代码

上面图片中的英文翻译过来是这样的:执行此操作时,请确保保留对图像对象的引用,以防止被Python的内存分配器垃圾收集。由此我们知道部分Image控件不显示图片的内容,但也不报错的原因是图像对象被内存分配器进行了垃圾回收,因为刚开始如果没有在全局域中对该对象进行声明,如果对象存在于函数或者自定义类中,引用次数为0的对象一般会被内存分配器进行回收,导致图片不显示。

然后,我们在创建具体控件,具体代码如下图所示。

增加按钮控制图片显示

我们看一下对于新增加的按钮的响应事件函数。

显示\隐藏图片按钮响应函数

我们看到,在图片显示事件中我们使用了一个函数self.resize(400, 300, self.image),下面我们看下这个定义函数内容。如下图所示。

设置图片大小随控件展示

好了,编码到此为止。下面我们看看程序实现效果。

【效果展示】

程序打开,显示图片按钮不可用(state=DISABLED)。如下图所示。

程序打开效果

然后我们从本地选择一幅图片,还是之前李白的《将进酒》吧。打开看下效果。如下图所示。

图片内容成功获取并展示

然后我们看下新增的显示图片的功能。关闭提示信息后,打开文件按钮文字相应发生变化,且显示图片按钮变为可用。效果如图所示。

关闭提示信息后显示图片

单击隐藏图片后,图片即可隐藏。如下图所示。

隐藏图片效果成功实现

换个背景看看。

程序执行最终效果

【总结】

今天带大家完成了应用中显示、隐藏图片功能,可以方便我们使用图片和文本框的文本进行修正。我们知道,任何一款好的图像识别算法,不可能做到图像识别正确率100%,这时,我们这个功能的实现就方便了用户更好的进行修正文本。但是,作为Python程序设计,这一块还是存在一些可以改进的地方,如果图片内容太小,或者图片分辨率不够高,我们在原始比例下对图片的文字信息可能看得不是很清楚,这就需要我们对这一程序进行进一步改进,让图像可以缩放,这样是不是就更方便了?后续我们会实现这一功能。感兴趣的读者请持续关注,后续会有精彩内容哦,欢迎大家留言讨论。

转载请注明出处(百家号:Python高手养成)

python识别图片文字、并返回文字坐标_简易OCR图片文字识别工具的进一步改进(增加显示图片的功能)...相关推荐

  1. 截屏就可以转文字?飞桨带您体验OCR超轻量中英文识别模型

    [飞桨开发者说]陈千鹤,华中科技大学计算机科学与技术学院大一在读 任务背景 目前很多实用小工具都趋向收费模式,即使免费,不是功能不完整,就是有很多约束条件,在应用时效果无法达到我们的预期.于是我萌生一 ...

  2. 基于深度学习的自然场景文字检测及端到端的OCR中文文字识别

    向AI转型的程序员都关注了这个号

  3. c# spire.xls 设置文字为微软雅黑_学习 原来Excel文字排版也这样漂亮!

    如果office中哪个软件排版最好用,肯定是word.哪个软件排版最好看,肯定是PPT.其实很多人不知道,Excel表格认真起来,排版后也是十分的好看. 真是没有对比就没有伤害,来看看Excel表格中 ...

  4. python内置函数可以返回列表元组_十九、python内置函数汇总

    ''' 内置函数 abs():取绝对值 all():每个元素都为真,才是真any():有一个元素为真即为真 bin():十进制转二进制 hex():十进制转十六进制 int():所有的转成十进制 oc ...

  5. python排版word文档命令方法大全_简易常用Word文档使用技巧方法大全(超全).doc

    PAGE Word文档使用技巧方法大全 Word2000.2003.2007.2010快捷键使用大全总结 常用快捷键快捷键 作用 一.字体类Ctrl+B 使字符变为粗体Ctrl+I 使字符变为斜体Ct ...

  6. Python制作简易OCR文字识别系统

    前不久看了一篇"如何使用Python检测和识别车牌?"用OpenCV对输入图像进行预处理,用imutils将原始输入图像裁剪成所需的大小,用pytesseract将提取车牌字符转换 ...

  7. python图片分类管理系统_图片分类工具MyQcloudImage免费版下载(图片管理系统) V1.0 绿色版_数码资源网...

    需要智能人脸识别图片管理软件?MyQcloudImage免费版肯定是您需要的哦!图片分类工具这里有最新的最强大的图片数据分类和图片识别功能可以了解哦!MyQcloudImage免费版最好用的图片管理系 ...

  8. java awt 显示图片_Java开发笔记(一百二十三)AWT图像视图

    前面介绍了AWT的几种基础控件,从按钮到文本标签,从输入框到选择框,无一例外都能显示文字,唯独无法显示某张图片文件.本以为AWT会提供专门的控件来显示图片,然而偏偏没有意料之中的图像控件,这可真是弱爆 ...

  9. 如何使用OLED显示图片

    以下文章来源于:公_众_号开源电子网 读取更多技术文章,请扫码关注 如何使用OLED显示图片 前言 这篇文章不过多描述OLED工作原理及驱动过程,仅从实用性出发,如何使用OLED显示图片.这里我们以正 ...

  10. 利用51单片机+0.96寸iic接口oled显示图片或动图

    利用51单片机+0.96寸iic接口oled显示图片或动图 前言:之前讲过如何使用oled显示数字以及字符,但并未讲述如何显示BMP格式的图片, 这篇将在之前的基础上加以封装一些函数用来显示图片 硬件 ...

最新文章

  1. 偏前端 - vue-cli(axios请求数据==》token+按接口参数顺序(参数值拼接base64)- MD5)...
  2. 想找到女朋友,你得掌握这些算法
  3. 【数字信号处理】相关函数应用 ( 相关函数应用场景 | 噪声中信号检测 | 隐含周期性检测 | 时差估计 | 描述随机信号 )
  4. JUC并发编程六 并发架构--偏向锁
  5. DB2存储过程语法规则
  6. 《剑指offer》调整数组顺序使奇数位于偶数前面
  7. Eclipse里选择Servlet Run As Server后,自动生成了哪些资源?
  8. Vulhub 靶场下载使用
  9. nginx负载均衡实验笔记
  10. C#语言与Java语言程序的比较[转自chinaitlab]
  11. MyBatis Plus 联合查询
  12. 蓝牙sbc怎么解决_你不知道蓝牙耳机术语,看懂了才明白哪些是优质蓝牙耳机
  13. 【和小冉一起学习c++】踏入c++的大门~第一个c++程序
  14. 输入某年某月然后输出当前月份的天数
  15. 局域网SDN技术硬核内幕 二 云网CP的日常恩爱——硬件VXLAN转发平面
  16. bzoj 2959: 长跑(LCT+并查集)
  17. Linux小知识:查看当前最耗费CPU的线程(Arthas工具)
  18. 一个人在家简单吃点小火锅,搭配点小海鲜
  19. 游戏直播的下一站在哪?战旗TV开启线上线下联动
  20. MySQL增删改查常用语句命令

热门文章

  1. 手把手带你玩摄像头模组
  2. 基于springboot社区疫情防控管理系统
  3. 基于confd和etcd的tuxedo中间件容器化方案
  4. K60学习笔记一:PORT端口
  5. PHP ASCII 排序方法
  6. PADS2007添加过孔
  7. 操作系统课程设计----模拟文件管理系统(c语言)
  8. 操作系统课程设计:模拟文件系统
  9. 基于QT实现简单的音乐播放器
  10. 浙江工业大学计算机学院的博士招生,浙江工业大学计算机科学与技术学院、软件学院...