基于PyQt5和OpenCV库的简单的文档对齐扫描应用程序
计算机视觉-作业1
- 作业要求
- 简介
- 说明
- 安装
- 运行
- 功能
- 使用
- 待完善
- 代码相关
作业要求
拍一张A4纸文稿的图片,利用角点检测、边缘检测等,再通过投影变换完成对文档的对齐扫描
简介
使用python语言,基于PyQt5和OpenCV库的简单的文档对齐扫描应用程序
- 演示视频
DocAlignScan演示
说明
为了后续方便说明,这里给出定义

安装
numpy==1.21.6
opencv_contrib_python==4.5.4.60
opencv_contrib_python_headless==4.5.5.64
opencv_python==4.8.1.78
Pillow==10.1.0
PyQt5==5.15.10
PyQt5_sip==12.11.0
注意:本地环境导出,由于环境杂乱,导出的版本有多个,这里只留下了最后下载的版本,并不一定正确,仅供参考
或使用语句:
pip requirements.txt -r
运行
使用语句:python ./rum
功能
- 导入/保存图像
- 对图像进行:放大缩小(点击按钮或使用鼠标滚轮)/拖动 / 旋转(固定角度90)/图像增强 操作
- 对图像进行文档对齐扫描操作,并可对scan_img进行:保存/旋转/图像增强 操作
使用
-
Step1:运行run.py,显示基于PyQt5搭建的图形界面

-
Step2:点击“open”按钮导入img

(导入的图像有时候比例会扭曲啊显示不清晰啊,但是还是能勉强使用orz)
- Step3:点击“对齐扫描”按钮

点“OK”

(注意:由于处理时未压缩图片大小,像素大的图像耗费时间多。请耐心等待)
待完善
1. 拍摄的文档照片,背景需单一,且文档四角需清晰,否则分割失败;
2. 该项目使用pyqt5作为图形界面,但在进行文档对齐扫描时是使用OpenCV的界面,两者的图像格式不能很好的切换,导致应用程序的耦合性低,用户使用不够友好;
3. 由于时间有限(加懒),手动调整角点的功能未实现,待后续完善。
代码相关
- 项目地址:(等这个作业到截止时间了会放到GitHub上)
项目目录:

各文件说明:
config.py:各种库
run.py:项目运行文件

ui.py:使用PyQt5定义的图形界面
simple_scan:简陋的文档对齐扫描函数文件
相关文章:
基于PyQt5和OpenCV库的简单的文档对齐扫描应用程序
计算机视觉-作业1 作业要求简介说明 安装运行功能使用待完善代码相关 作业要求 拍一张A4纸文稿的图片,利用角点检测、边缘检测等,再通过投影变换完成对文档的对齐扫描 简介 使用python语言,基于PyQt5和OpenCV库的简单的文档对齐扫描应用程…...
【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割2(基础数据流篇)
构建pytorch训练模型读取的数据,是有模版可以参考的,是有套路的,这点相信使用过的人都知道。我也会给出一个套路的模版,方便学习和查询。 同时,也可以先去参考学习之前的一篇较为简单的3D分类任务的数据构建方法,链接在这里:【3D图像分类】基于Pytorch的3D立体图像分类…...
HDR图像处理软件 Photomatix Pro mac中文版新增功能
Photomatix Pro mac是一款专业的HDR合成软件,可以将不同曝光的多张照片合成为一张照片,而保留更多的细节。并且合成时可以帮助去除照片中的鬼影。Photomatix Pro提供两种类型的过程来增加动态范围,一个过程称为HDR色调映射,另一个…...
【Kotlin精简】第5章 简析DSL
1 DSL是什么? Kotlin 是一门对 DSL 友好的语言,它的许多语法特性有助于 DSL 的打造,提升特定场景下代码的可读性和安全性。本文将带你了解 Kotlin DSL 的一般实现步骤,以及如何通过 DslMarker , Context Receivers 等…...
2021年06月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python编程(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 下列程序运行的结果是? s hello print(sworld)A: sworld B: helloworld C: hello D: world 答案:…...
MySQL执行计划分析
执行计划中的常见的列的解释: type system/const :用户主键索引或者唯一索引查询时,只能匹配 1 条数据。一般可以对 sql 查询语句优化成一个常量,那么 type 一般就是 system 或者 const,system 是 const 的一个特例&…...
【数据结构与算法】Snowflake雪花算法Java实现
Snowflake产生的ID由 64 bit 的二进制数字组成,被分成了4个部分,每一部分存储的数据都有特定的含义: 第 0 位: 符号位(标识正负),始终为 0;第 1~41 位 :一共 41 位&…...
重要功能更新:妙手正式接入SHEIN供货模式(OBM)店铺,赋能卖家把握出海新机遇!
继接入SHEIN平台模式店铺之后,妙手ERP积极响应卖家需求,正式接入SHEIN供货模式(OBM)店铺,并支持产品采集、批量刊登、产品管理等功能,帮助跨境卖家快速上品、高效运营,把握出海新机遇。 SHEIN供…...
和鲸ModelWhale与中科可控X系列异构加速服务器完成适配认证,搭载海光芯片,构筑AI算力底座
AIGC 时代,算力作为新型生产力,是国家和企业构建竞争优势的关键。而随着传统计算方式无法满足新时代激增的算力需求,计算场景的多元化和计算应用的复杂化推动了 CPUGPU 异构平台的加速组建。在此全球激烈角逐的大趋势下,我国信创产…...
Vue单文件组件
一、.vue文件 我们使用Vue的单文件组件的时候,一个.vue文件就是一个组件。 例如我们创建一个School组件: 二、组件的结构 我们编写网页代码的时候有HTML结构、CSS样式、JS交互。 组件里也是同样存在这三种结构的: <template><d…...
轻松理解 Transformers(1):Input部分
编者按:Transformers 是人工智能领域近年来最引人瞩目的技术之一,它为语言生成模型的发展做出了巨大的贡献。随着大语言模型(LLM)的兴起,公众对其背后的技术原理也越来越感兴趣。但是由于Transformers本身具有一定的复…...
PHP MySQL 交互 笔记/练习
PHP 与 MySQL 交互 交互函数 函数名作用mysqli_connect()与MySQL 数据库建立连接。mysqli_close()关闭与MYSQL 数据库建立的连接。mysqli_connect_errno()与MySQL 数据库建立连接时,发生错误时的错误编号。mysqli_connect_error()与MySQL 数据库建立连接时&#x…...
领域驱动设计:基于DDD的微服务设计实例
文章目录 项目基本信息战略设计战术设计后续的工作 用一个项目来了解 DDD 的战略设计和战术设计,走一遍从领域建模到微服务设计的全过程,一起掌握 DDD 的主要设计流程和关键 点。 项目基本信息 项目的目标是实现在线请假和考勤管理。功能描述如下&…...
【PB续命02】Oracle中加密及编码等
Oracle中实现Md5/Base64/AesBase64/UrlEncode等加密编码的使用备忘,参考其它人的贴子,Oracle 11g 亲测有效。 1. Oracle中实现Md5加密 SELECT lower(MD5(白龙马5217)) FROM dual; --返回结果 72853926982028ab8219921ad2918b8f --或 select utl_raw.…...
STM32-LTC6804方案成熟BMS方案
方案下载链接!!https://mp.weixin.qq.com/s?__bizMzU2OTc4ODA4OA&mid2247549092&idx1&snc73855c4e3d5afddd8608d8528864f95&chksmfcfb1373cb8c9a65a4bd1f545a1a587af882f209e7ccbb8944f4d2514d241ca1d7fcc4615e10&token539106225&a…...
一步一步认知机器学习
1,前言 之前学习并且实操了一些算法框架用来探索相关方向的可能性,但是总不了解相关的步骤。因为一步一步按照别人给出的步骤去操作,解决一些操作时出现的问题,基本可以达到目的。但是这个也基本限制了在那个框架而已。对于算法还…...
现代C++、STL、QTL的使用
0、现代C中最重要的是: 右值引用&&、移动语义std::move、完美转发std::forward、万能引用T&& void Func(int& x) { cout << "左值引用" << endl; } void Func(const int& x) { cout << "const左值引用…...
Android 备案公钥、签名 MD5获取方法
公钥和 MD5 值可以通过安卓开发工具、Keytool、Jadx-GUI 等多种工具获取,本文以 jadx-gui 为例。 1 windows 下载 jadx-gui 工具 下载 jadx-gui 工具 在这里选择一个下载 下载后 解压文件 双击运行程序,然后选择 release apk安装包 2 Mac 打开终端&a…...
1688拍立淘接口,按图搜索商品接口,图片识别接口,图片上传搜索接口,图片搜索API接口,以图搜货接口
1688拍立淘接口的作用是让用户通过上传图片或输入图片链接的方式,调用1688的图片搜索引擎,返回与该图片相关的所有1688商品。 使用该接口需要先获取一个key和secret,然后参考API文档里的接入方式和示例,查看测试工具是否有需要的…...
H3C AC通过Web平台进行AC软件的升级?
软件升级的流程 1、获取软件版本 登录新华三官网(首页>产品支持与服务>文档与软件>软件下载),将指定的软件版本下载至本地。 无线路由器-无线接入点-无线控制器-新华三集团-H3C 官网软件下载公共账号密码:账号&#x…...
Alpamayo-R1-10B开源镜像教程:21GB模型文件校验、加载失败排查与修复指南
Alpamayo-R1-10B开源镜像教程:21GB模型文件校验、加载失败排查与修复指南 1. 项目概述 Alpamayo-R1-10B是NVIDIA开发的自动驾驶专用视觉-语言-动作(VLA)模型,通过10B参数规模实现类人因果推理能力。该模型需要21GB模型文件&…...
Flux Sea Studio 海景摄影生成工具:LaTeX技术文档编写——生成高质量海景插图与科研论文配图实践
Flux Sea Studio 海景摄影生成工具:LaTeX技术文档编写——生成高质量海景插图与科研论文配图实践 写论文、编教材,最头疼的事情之一就是找配图。要么是找不到合适的,要么是找到了但版权不明晰,要么就是风格不统一,七拼…...
Qwen3-14B制造业供应链协同:采购需求解析+供应商沟通话术生成
Qwen3-14B制造业供应链协同:采购需求解析供应商沟通话术生成 1. 引言:制造业供应链协同的智能化升级 在制造业供应链管理中,采购环节的沟通效率直接影响生产计划和成本控制。传统模式下,采购人员需要花费大量时间分析需求文档、…...
实战:多语言翻译协作 Agent Harness
实战:多语言翻译协作 Agent Harness 1. 标题 (Title) 从零构建多语言翻译协作系统:Agent Harness 实战指南 多 Agent 协作新范式:打造智能多语言翻译 Harness 框架 告别单一翻译模型:构建协作式多语言翻译 Agent 系统 Agent Harness 实战:如何让多个 AI 代理协同完成专业…...
CSS如何实现不同尺寸的卡片网格_利用Grid跨行跨列设置
Grid卡片跨行跨列需用grid-row: span 2等语法避免线号计算错误;auto-fit需容器有明确宽度;高度不一致时宜用嵌套布局或grid-auto-rows: auto;IE11不支持现代Grid跨行,应降级方案。Grid卡片跨行跨列时,grid-row和grid-c…...
从“蛮力训练“到“精准学习“:AFSS让YOLO训练效率爆炸式提升
从"蛮力训练"到"精准学习":AFSS让YOLO训练效率爆炸式提升做目标检测的朋友都知道,YOLO系列推理是真的快,毫秒级响应,工业场景的首选。但训练效率低这个问题,一直是痛点。 先看数据:YOL…...
OpenClaw调试技巧:捕获Qwen3.5-9B错误推理的5个方法
OpenClaw调试技巧:捕获Qwen3.5-9B错误推理的5个方法 1. 为什么需要关注模型推理错误 上周我让OpenClaw自动整理项目文档时,发现它把"API响应时间优化方案"归类到了"前端样式规范"目录。这个看似简单的错误背后,是Qwen3…...
基于QT(C++)+Oracle实现的(界面)教务管理系统
一、选题背景 教务管理系统是基本每个高校都有的一个系统,教务系统管理系统充分利用互联网络B/S管理系统模式,以网络为平台,为各个学校教务系统的管理提供一个平台,帮助学校管理教务,用一个账号解决学校教务教学管理&…...
k8s与docker compose的思考
1.稍微复杂2.ip会漂移,各种端口转发性能有所损失。3.占用一定的资源4.master需要高可用5.更适合web无状态docker-compose则比较简单,搭建本地环境就一个配置文件的事情,简直是本地test环境神器。...
开箱即用!Qwen3-VL-8B AI聊天系统一键启动,小白也能玩转
开箱即用!Qwen3-VL-8B AI聊天系统一键启动,小白也能玩转 1. 项目概览:你的智能聊天助手 想象一下,你刚拿到一个功能强大的AI聊天系统,不需要任何复杂配置,就像打开一个新买的智能音箱一样简单。这就是Qwe…...
