小伙伴们在日常的工作学习中,或多或少的都会遇到,将书籍或者是资料文件,用手机进行拍摄,方便文档的保存,但是由于拍摄的角度或者是拍摄手法的原因,拍摄出来的照片往往会出现偏差,阅读起来也不方便。

今天,小编就为大家制作了一款简易的扫描器,帮助大家将拍摄的图片进行纠正,并将纠正的图片进行保存,一起来看看吧。

01.效果展示

为了让大家对软件有更好的全面的认识,我们先通过视频展示的方式,来一睹为快。

02.程序讲解

接下来,我们通过程序的一点点解析,让大家更好的对软件有更好的认识。对于程序部分的讲解,我们可以拆解为两个部分:

  • 图片的纠正

  • 软件界面的构建

03.图片的纠正

对于图片的纠正,可以归结为边缘检测——>角点检测——>透视变换的过程,边缘检测的作用是检测图片中的图像的边缘,程序如下图所示。

04.边缘检测

程序通过opencv中的Canny函数来检测物体的边界,这里需要注意的是,有两个阈值数值需要调节:

  • 程序中分别用threshold_bar1和threshold_bar2两个滑动条来控制,threshold_bar2用来检测较为明显的边界;

  • 而threshold_bar1则是负责将threshold_bar2检测出来的边界进行连接,组成一个完整的物体边界信息;

通过dilate和erode函数来将边缘进行填充后,通过findContours函数,来得到物体的轮廓的位置坐标信息,程序中contours变量保存的是位置坐标数值。对于边缘检测后填充的效果,效果如下图所示:

05.角点检测

对于角点的检测,也就是对于轮廓中“角”的检测,程序如下图所示。

程序通过对于轮廓数值中每一组数值的面积计算,如果面积大于5000,就利用approxPolyDP函数对轮廓进行多边形的拟合操作;

如果拟合出来的图形是四边形的话,则说明该组轮廓数据下,检测到了类似于书本、纸张等矩形的目标,那么就返回approxPolyDP函数所拟合的四个角点坐标的数值。如下图所示。

06.透视变换

在得到拟合的角点数据之后,接下来就是要进行透视变换的操作,所谓的透视变换,可以理解为将偏斜角度拍摄的目标,转变为正视图。程序如下图所示:

程序将拟合得到的四个角点坐标,通过透视变换转变为480x640大小的正视图,程序中通过getPerspectiveTransform函数生成透视变换的变换矩阵,利用warpPerspective函数来完成对于原图的透视变换,其结果如下图所示:

07.软件界面的构建

软件界面的构建,利用的是PyQt5进行制作,其界面如下所示:

软件界面中,位于界面中央显示的是图像的展示区域,分别是原图展示,提取到的矩形目标以及最终的透视变换的结果图。

  • 界面中黄色的模块表示的是按钮控件,其中,“文件”按钮,表示选取本地的原始图片,“开始”按钮表示的是执行图片的投视变换,

  • 保存按钮则是将最终的透视变换结果进行保存。

  • “退出”按钮则是代表退出整个软件。

这里我们以“开始”按钮为例,解析一下其控制的函数。

“开始“按钮绑定openImg函数,当点击按钮时,程序通过getOpenFileName函数来选取本地的文件,获取得到本地文件的路径,并将本地的图片展示在界面当中。

08.总结

以上就是小编为大家分享的图片扫描器的内容,大家可以下载软件进行测试,需要注意的是,在图片拍摄的过程中,为了保证扫描器结果准确性,大家尽量保证拍摄图片的背景为单一的颜色,如上图中,原始图片中,书本的背景为单一的黑色,这样,最大程度的保证了结果的准确性。

觉得本篇不错的小伙伴,记得在留言区给个三连哦!

如何获取本篇资料:

在下面的公众号「菜鸟编程大本营」后台输入,小助手,备注暗号(扫描王)

推荐阅读:入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影年度爆款文案1).卧槽!Pdf转Word用Python轻松搞定!2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密 4).80行代码!用Python做一个哆来A梦分身 5).你必须掌握的20个python代码,短小精悍,用处无穷 6).30个Python奇淫技巧集 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货 8).再见Python!我要学Go了!2500字深度分析!9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片点阅读原文,领廖雪峰视频资料!

卧槽!逆天了,Python竟然能打造一款扫描全能王,实现图片纠正!相关推荐

  1. python语音唤醒_用Python为女朋友打造一款智能语音闹钟

    image 前言 最近在做智慧工厂相关的工作,多多少少了解了一点物联网相关的技术.于是心血来潮,寻思自己可以做点什么,恰巧之前听说过一些树莓派的传闻,于是就有了这么一款闹钟. 需要说明的是,在看这篇文 ...

  2. python电子英汉词典显示_如何使用python为Linux打造一款命令行下的在线英汉词典...

    项目说明 : 在linux终端下有时候遇到一个想查询的英语单词 , 但是不想打开浏览器去谷歌或者百度去搜索 , 因此就写了这个基于爬虫的单词翻译工具 , 实现原理很简单 , 基本开发已经完成 ,总共有 ...

  3. 使用QWebEngineView打造一款简单浏览器

    使用QWebEngineView打造一款简单浏览器 使用PyQt5的QWebEngineView组件打造一款简单的浏览器 成品图片 首先重写一下QWebEngineView类的createWindow ...

  4. 这个Python库有点逆天了,竟然能把图片,视频无损清晰放大!

    马上要开学了,老板让我整理很学弟学妹的照片,但是很多照片的清晰度都不是很高,还要做成海报,怎么办呢? 真是愁死我了,于是小编在逛GitHub的时候发现了一个非常牛逼的库,竟然有逆天的功能,一个用Pyt ...

  5. Python竟然可以画漫画!漫画版的故宫导游图,来袭!

    随着Python编程的应用领域越来越广,从数据分析到人工智能.从机器学习到深度学习.从数据可视化到分析报告,越来领域开始使用Python. 而漫画领域也开始涉及Python,兰道尔·门罗(网名xkcd ...

  6. 一个黑科技,Python竟然可以伪造很多'假'的数据!

    点击上方"菜鸟学Python",选择"星标"公众号 干货第一时间推给你!!! Python里面的库真的太多太多了,各种千奇百怪的都有.今天小编逛GitHub的时 ...

  7. 太实用了!Python竟然能把“长的”变成“短的”!

    人生苦短,菜鸟学Python! 最近我遇到了一些问题:需要将几百条长链接转成短链接.经过一番学习,发现Python可以轻松解决这个问题,不仅可以实现缩短[长链接→短链接],也可以实现还原[短链接→长链 ...

  8. 牛掰!100行Python,自动动手打造一款多国语言翻译软件,酷啊!

    公众号 "菜鸟学Python" 第434篇原创,设为 "星标",一起学Python! 大家在平时的学习或者工作中,往往少不了要阅读外文的文献,或者将外文的文献翻 ...

  9. 666,Python竟然还可以计算农历!

    最近处理工作任务的时候遇到了转换农历的问题.一开始我打算搜索在线处理的网站或者转换的接口,结果找到了一个Python库可以直接解决,今天正好同大家分享一下. 农历,是我国现行的传统历法.它是根据月相的 ...

  10. 第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理...

    第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲-深度优先与广度优先原理 网站树形结构 深度优先 是从左到右深度进行爬取的,以深度为准则从左到右的执行(递归方式实现)Scrapy默认 ...

最新文章

  1. 谈谈近况,谈谈自由职业,谈谈金饭碗
  2. 基于 EventBridge 构建 SaaS 应用集成方案
  3. yolo数据集txt标注转voc数据集xml标注格式
  4. java 简单的webshell_Java Web使用JSPX白名单绕过上传WebShell | kTWO-个人博客
  5. 【学习笔记】【C语言】进制
  6. 不是我吹,这款神仙 IDEA 插件你真没用过!
  7. 【分享】React函数式组件写法优劣
  8. cuda第一次计算耗时_CUDA编程入门(四)并行归约算法
  9. 物联网:Android端控制ZigBee实现生产环境自动控制
  10. 我曾做过陈士成,也做过孔乙己,还做过阿Q
  11. Boxplot(箱形图或盒图)的介绍和使用
  12. 如何给word文档添加注释
  13. 15个HTML5播放器插件
  14. 链游玩家寻找新一代武侠小说掌门人,签约青年武侠作家常博涵
  15. linux查看ssh进程命令,查看linux ssh服务信息及运行状态方法
  16. python搜索文献 速成_0基础5天速成Python,你也能发top期刊
  17. 怎么学习单片机编程?单片机基础入门内容有哪些
  18. 如何实现电脑时间与北京时间同步
  19. ThinkPad E545连WiFi教程(系统:ubuntu-20.04.3-live-server,无线网卡:BCM34142)
  20. 计算机的基本组成 教案反思,《计算机系统组成》教学反思

热门文章

  1. windows server 2016 活动目录部署系列(三)加入域且创建域用户
  2. 梅宏:不容错过的大数据时代_我们错过了整个网络支付领域:如何为创作者修复网络...
  3. OFDM信号的产生与解调
  4. 宋人千首绝句【全十卷】
  5. word表格转为html5,怎么把网页版的表格转至Word
  6. Excel中不复制隐藏行
  7. 面试必杀技:异步FIFO
  8. 如何使用shell限制指定用户shell程序的网络带宽
  9. 高通msm8953平台摄像头移植
  10. 2dx cound not find libcocos2dcpp.so