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

仿照扫描全能王python程序实现 仿照扫描全能王python程序实现 由于某些原因,我得到一批文件,其大部分为扫描件,但再扫面件其中混杂了部分的拍照文件,因此萌生了使用python变成使拍照图片文字清晰,背景统一,即实现类似扫描文件的效果 本文最终原理参考->https://www.wandouip.com/t5i70153/ 最终选择算法介绍 主要思想有二 1、高斯滤波对原图像进行处理,然后讲两张图利用图像除法,得到一张新图 2、对新图进行图像增强技术 下面介绍高斯滤波及矩阵除法操作 高斯滤波可以得到光照图像,记原图为A,经大核高斯 阅读详情
AI摘要

本文介绍了一款使用Python和OpenCV制作的简易图片扫描器,能够自动纠正拍摄图片的偏斜,将其转换为正视图。通过边缘检测、角点检测和透视变换等步骤,软件能准确识别并校正类似书本或纸张的矩形目标,提升文档保存的便捷性和阅读体验。软件界面友好,用户可轻松上传图片、执行变换并保存结果。

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

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

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版本)- 目标检测图像矫正 全能扫描王python代码实现,可用于文件扫描或者是图像校正 阅读详情

相关推荐

从扫描全能王到Python实现:OpenCV文档矫正的10个避坑指南(附参数优化表)

本文深入解析OpenCV文档矫正技术,提供工业级参数优化表和实战避坑指南。涵盖边缘检测、透视校正和文字增强等核心模块,帮助开发者在复杂场景下实现99%的矫正准确率,并将处理速度优化至200ms以内。特别适合需要处理高噪声、复杂背景的Python开发者。

weixin_30892037的博客 337

基于SpringBoot+Python多语言文档扫描处理和OCR识别系

计算机视觉(Computer Vision)又称为机器视觉(Machine Vision),顾名思义是一门“教”会计算机如何去“看”世界的学科。在机器学习大热的前景之下,计算机视觉与自然语言处理(Natural Language Process, NLP)及语音识别(Speech Recognition)并列为机器学习方向的三大热点方向。在如今互联网时代,人工智能发展迅速,计算机视觉领域应用非常广泛,对人才的需求也是非常大,计算机视觉在IT领域的工资水平非常高,初级就能达到一个很好的薪资水平,学好计算机视觉,势在必得,增加自己的竞争力以及给自己一个好的薪水。 以下是计算机视觉部分应用场景,可以看到它的需求非常大:1.Google, MS, Facebook, Apple,华为,阿里,腾讯,百度等世界科技公司,无一没有建立自己的AI实验室,AI里面,计算机视觉或图像处理是非常重要的一块,当然它们研究方向就多了,几乎会涵盖所有方向。2.世界各大汽车公司,如特斯拉,宝马。汽车公司开始发力自动驾驶,而自动驾驶里面最核心的技术就是“教”汽车里的电脑如何通过摄像头实时产生的图片和视频自动驾驶。因此视觉和图像处理便是核心技术所在,如行人探测,道路识别,模式识别。3.Adobe,美图秀秀等照片、winrar、real player等视频处理、压缩软件。这个不多说,直观的应用,比如降噪,图像分割、图像压缩、视频压缩。4.AR(增强现实)最近由于Pockman GO的风靡全球又被推到第一线,而Google Class或者三星Gear眼镜等等,也无不和图像处理、计算机视觉的科研有关。预测这将是未来几年主推的东西。5.迪士尼等各大电影制片公司。3-D电影,以及各种炫酷的电影特效,当然里面不光有图像处理,还有计算机图形学的东西在里面。6.地平线,大疆无人机等机器人公司。和自动驾驶一个道理,机器人要通过摄像头“判断”并躲开前方障碍物,核心技术都在视觉和图像处理。7.医疗器械设备公司。医学图像处理,核磁共振,断层扫描等等,众所周知医疗行业都是暴利阿。8.工业级摄像头;包括高速路上的摄像头,机场火车站安检摄像头,工业流水线上的摄像头,嵌入了人脸或次品识别的芯片,智能地识别罪犯、次品,等等。 基于SpringBoot+Python多语言文档扫描处理和OCR识别系统,将以基础知识为根基,带大家完成一个强大的文档扫描处理和OCR识别系统,该系统将包含算法部分,算法服务,算法商业化api部分等。应用场景可以为:爬虫图片文字识别、文档图片自动整理和输出文字、实时扫描输出系统、PDF文档转换系统等等,算法可以商业化,系统同时实现了商业化api功能,商业价值非常高,大家可以基于课程项目的基础上进一步完善,做到商用,学到知识的同时,给自己额外增加收入。 本课程包含的技术: 开发工具为:IDEA、WebStorm、PyCharmPythonAnconaOpencvDjangoSpringBootSpringCouldVue+ElementUI+NODEJS等等 课程亮点: 1.与企业接轨、真实工业界产品2.强大的计算机视觉库OPENCV3.从基础到案例,逐层深入,学完即用4.市场主流的前后端分离架构和人工智能应用结合开发5.多语言结合开发,满足多元化的需求6.商业化算法api实现7.多Python环境切换8.微服务SpringBoot9.集成SpringCloud实现统一整合方案 10.全程代码实操,提供全部代码和资料 11.提供答疑和提供企业技术方案咨询

二维码黑科技:用Python把任意图片变成可扫描的隐形二维码(详细教程)

本文详细介绍了如何使用Python将任意图片转化为可扫描的艺术二维码,结合计算机视觉技术和二维码生成算法。通过OpenCV、qrcode等库实现图像融合与频域处理,确保二维码在保持艺术美感的同时具备高扫描成功率,适用于品牌营销、防伪标签等商业场景。

u8v9w0x1y的博客 181

python图像处理(十)——图像仿射变换、图像透视变换和图像校正

一、图像仿射变换 1.原理 仿射变换(Affine Transformation 或Affine Map)是一种二维坐标(x, y)到二维坐标(u, v)的线性变换,转换过程坐标点的相对位置和属性不发生变换,是一个线性变换,该过程只发生旋转和平移过程。因此,一个平行四边形经过仿射变换后还是一个平行四边形。所以,仿射= 旋转 + 平移。其数学表达式形式如下: 对应的齐次坐标矩阵表示形式为: 仿射变换保持了二维图形的“平直性”(直线经仿射变换后依然为直线)和“平行性”(直线之间的相对位置关.

AI_girl的博客 1万+

ScamScanner-python

SCCAMCAMMER

SAP公司间外协业务流程以及配置说明

SAP公司间外协业务流程以及配置说明

竹大的博客 7172

iOS---使用OpenCV 实现图片的透视校正

转自:https://www.jianshu.com/p/95f266d063dc 网上看到的安卓代码: https://github.com/pqpo/SmartCropper     <h4>一、前言</h6> 写这篇博客的目的为记录,并且供大家学习,希望大家多多交流,有不正确的地方请指正,轻喷。!~~ <h4>二、透视校正简介 </h...

iotjin的专栏 2184

Android定位权限全解析:从基础配置到后台持续定位的完整解决方案

本文全面解析Android定位权限体系,从基础配置到后台持续定位的完整解决方案。涵盖LocationManager和FusedLocationProviderClient等主流API的对比选型,详细讲解动态权限申请、精确定位与模糊定位的智能切换,以及Android 10+的后台定位适配策略。帮助开发者构建兼顾精准度与电量友好的定位方案,适用于导航、运动轨迹记录等多种场景。

weixin_29310605的博客 615

opencv+scikit-image实现图片转成扫描件效果

大致实现图片转成扫描件的效果显示

weixin_43362779的博客 1679

Vue3 + MQTT.js 实现 SCADA 实时数据通信:从不稳定到稳定的完整实践

本文介绍了SCADA组态引擎开发中MQTT协议的应用及优化实践。项目采用MQTT协议实现工业设备数据采集与可视化,但面临连接不稳定、数据格式多样化和数据绑定复杂三大问题。针对MQTT连接问题,分析发现超时设置过短(原8秒)、缺少客户端超时配置和心跳机制是主要原因。优化方案包括:协议转换(mqtt://→ws://)、双重超时保护(15秒手动+30秒客户端)、60秒心跳间隔等,显著提升了连接稳定性。通过完整代码实现展示了连接配置、认证处理和错误处理机制,为物联网数据传输提供了可靠解决方案。

weixin_36794508的博客 1402

Python学习24:中国古代数学问题——物不知数(Python123)

意思是说有一些物品,不知道有多少个,3个3个数的话,还多出2个;5个5个数则多出3个;7个7个数也会多出2个。题目为‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?现假设物品总数不超过n (n

weixin_60530224的博客 2万+

Python 图片转pdf

之前同事找图片转pdf的软件,想着之前做过一个命令行的,于是想写成一个界面工具。 之前代码写的用的是img2pdf。本来想着也用这个库,实际测试下来发现很多问题。弃用。google了下,发现有人用Pillow完成这个功能,于是改了下代码,加上pyqt5,就写成了一个简单的界面工具 核心代码 def cover_to_pdf(self, pdf_path, images): ...

qq_25013919的博客 1513

GEE:大面积研究区域数据分块导出,以解决内存限制和导出失败的问题

本文介绍了在Google Earth Engine (GEE)平台分块导出大面积研究区域数据的方法。针对直接导出大区域影像易失败的问题,作者提出通过网格分块技术进行处理。文章展示了完整的JavaScript代码示例,包含定义研究区域、加载ESA WorldCover数据集、设置分块参数(包括像素大小、分块尺寸)、创建网格系统、处理坐标转换等关键步骤。代码中还提供了错误处理和导出按钮功能,确保数据能可靠地分块导出到Google Drive。该方法有效解决了大区域数据导出时的内存限制问题,适用于全球范围的研究。

养乐多的博客 1188

python实现图片,验证码 识别

python实现图片,验证码 识别 功能实现思路: 概述: 首先明确的是,python实现图片、验证码的OCR识别并不是python自身技术,而是通过python第三包调用OCR工具实现。 使用的OCR工具:Tesseract-OCR python第三方包:PIL,pytesseract 1 图片识别OCR技术和Tesseract-OCR工具 1.1 OCR技术定义 OCR(Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪 或数码相机)检查纸上打印的字

jinhua_110的专栏 2116

31、双相不锈钢直齿轮加工与性能研究及人工神经网络在焊接中的应用

本文研究了双相不锈钢直齿轮在不同加工方法(WEDM与滚齿加工)下的磨损行为,分析了表面粗糙度、齿厚变化、磨损率及润滑性能随转速的变化规律,并对比了两种工艺的优劣。同时,探讨了人工神经网络(ANN)在AA7050铝合金搅拌摩擦焊中的应用,通过建立工艺参数与焊接质量之间的预测模型,实现了对焊缝硬度和峰值温度的准确预测。研究为高性能齿轮制造和铝合金焊接提供了理论支持和技术参考,并提出了未来在润滑优化、加工工艺改进及智能控制方面的研究方向。

ggg99的专栏 151

YOLOv12改进策略【Neck】| arXiv 2024 MAFPN:多分支辅助特征金字塔网络 | 通过双向辅助融合与异构卷积机制,解决传统PAFPN多尺度特征融合不充分与小目标检测不足问题

本文记录的是利用MAFPN颈部结构改进YOLOv12的目标检测网络模型。通过引入双向辅助融合机制优化特征处理流程,在自底向上路径利用 SAF 模块融合主干浅层特征与颈部输出,并保留浅层空间信息,为小目标检测提供更丰富细节;自顶向下路径通过 AAF 模块建立密集连接,聚合浅层高 / 低分辨率层、同级层及前层特征,均衡各层通道数后实现多向梯度信息交互,增强中 / 大目标特征表达。将其应用到中,解决传统特征金字塔在多尺度信息整合中的不足,提升多尺度目标检测的精度与特征表达的丰富性。Multi-Branch Aux

Limiiiing的博客 1257

OpenCV文档扫描:透视校正+文字增强,扫描全能王核心功能复现(附Python全流程代码)

大家好,我是南木。文档扫描是办公、学习中最高频的CV应用场景之一,而(将倾斜文档转正)和(提升文字清晰度)正是“扫描全能王”“微软Office Lens”等工具的核心技术。但很多开发者尝试用OpenCV实现时,总会卡在“边缘检测不准”“角点排序错误”“增强后文字糊成一团”等问题上。这篇将从“原理拆解→分步实现→全功能整合”全流程,手把手教你用OpenCV复现扫描全能王的核心功能。包含五大模块,提供可直接运行的Python完整代码,重点拆解“复杂背景适配”“参数自适应”“鲁棒性优化”等落地关键。

2501_91798322的博客 1949

FM1288回声消除芯片调试方案 - 综述

专栏文章概览

优快云mianfeixiazai001的博客 1714

图像技术应用实战—全能扫描王(python)

from imutils.perspective import four_point_transform import imutils import cv2 import numpy as np from matplotlib import pyplot as plt import math def Get_Outline(input_dir): image = cv2.imread(input_dir) gray = cv2.cvtColor(image, cv2.COLOR_BGR2.

ISP行业的忠实粉丝 1894

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python图像处理:文档拍照扫描(手动构造扫描仪)

python图像处理实践:拍照文档扫描效果原理代码补充说明 本文是我在学习Adrian Rosebrock大佬的博客后的实践与整理。 话不多说,先看效果。 效果 第一张是我自己拍的,字比较清楚;第二张是网图,比较模糊,但总体效果可以接受。 原理 首先,我们可以认定,我们要处理的图都是符合下面两点的: 拍的文档是长方形的 文档在整个图里占很大比例 当然,如果背景是个比较单纯的底色,识别效果肯定会更好。 自然语言来描述的话,流程大致如下: 找到文档,将其摆平 黑白化 至于流程1,我在我的上 一篇博客

Mikumiku339的博客 7674

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

OpenSlide Python 处理全扫描图像

OpenSlide Python 处理全扫描图像 目录OpenSlide Python 处理全扫描图像全扫描(whole slide image)图像基本方法读取图像常用操作转换为 numpy 数组并用 opencv 处理 全扫描(whole slide image)图像 全扫描(whole slide image)图像非常的大,处理起来比较麻烦,openslide 提供了一个很好的接口,用来处理这些非常大的图像。 安装 sudo apt-get install openslide-tools sudo a

蜗牛、Gray 1629

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

借助ChatGPT快速开发图片转PDF的Python工具

摘要:本文介绍了一款基于Python开发的跨平台图片转PDF工具,适用于教育、办公等多种场景。该工具采用Tkinter GUI框架,集成PIL图像处理模块,提供图片批量管理(添加/删除/排序)、编辑(旋转/翻转)、批量重命名及一键转PDF功能。核心特点包括:异步转换不阻塞界面、自动处理图像格式、人性化交互设计(快捷键支持)及进度条反馈。代码采用面向对象设计,不到300行实现完整功能,展示了Python在工具开发中的高效性。工具可扩展OCR、水印等模块,具有实用价值和教学意义。

henanlion的博客 1242

Python:用numpy+OpenCV快速实现矫正图像的功能

透视变换是一个很实用的功能,当用手机去拍证件或者名片时,经常会拍歪,或者有边框。如果你使用过类似“扫描全能王”的软件,你应该知道,他们会自动把证件矫正并除边框,它就是通过透视变换实现的,和numpy中的仿射变换一样。 左图为原图,右图为矫正后的图 1.运行环境 Python3.6.5 pycharm win10 安装oponcv, numpy 库安装教程链接 2.代码 im...

Wayne_Dream的博客 1万+

图像处理 之 扫描全能王代替品

文章目录一. 项目起源和目的二. 功能分析三. 实现3.1 图像处理基础3.2 轮廓提取3.3 图像增强 一. 项目起源和目的 曾经我以为我与扫描全能王这个软件是真爱, 那傻瓜式的操作, 还能将扫描的文件上传到云端;直到2020年的那场疫情, 当我打开手机软件扫描全能王, 你怎么能变了呢, 曾经单纯干净的你怎么不见了呢,换来的却是广告,不停的提示收费,扫描一张图片还要加水印,不给钱就加水印, 不管你怎么讲,不给钱就不去水印我们说好的真爱呢,说好的啥都不要只愿永世相随呢,是道德的沦丧还是世风日下…最后感谢扫描

406156440的博客 5650

python双层for循环控制图像逐行扫描和逐列扫描

#!/usr/bin/python # -*- coding: utf-8 -*- # @Version : 1.0 # @Author : QQ736592720 # @Datetime : 2022/1/9 21:25 # @Project : opencv # @File : opencv_findX单通道求图像变化差异x.py import cv2 as cv im = cv.imread("sample.jpg", 1) # 三维数组 h, w = im.shape[:2] f

紫微斗数象法奥义ZWDStudy 2335

基于OpenCV4.x + Python3.7的文件扫描件切边实践

之前用Matlab做图像较多,最近准备学习用opencv和python进行图像处理,并就网上的实际案例进行了练手,其中的一篇扫描件切边案例是:opencv之案例实战-扫描件切边。 测试图像两种:(1)边缘整齐;(2)边缘添加干扰。具体图像如下所示。 ......

zj_study的博客 1783
上一篇: 入门Pandas不可不知的技巧
下一篇: Django网站实战——手把手带大家制作一个经典的网站
菜鸟学Python
博客等级 码龄9年 8084粉丝 571原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值