社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

菜鸟学Python • 4 年前 • 1028 次点击  


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


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


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: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影


年度爆款文案


点阅读原文,领廖雪峰视频资料!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/113588
 
1028 次点击