当前位置: 首页 > news >正文

基于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

功能

  1. 导入/保存图像
  2. 对图像进行:放大缩小(点击按钮或使用鼠标滚轮)/拖动 / 旋转(固定角度90)/图像增强 操作
  3. 对图像进行文档对齐扫描操作,并可对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:简陋的文档对齐扫描函数文件
http://www.lryc.cn/news/204344.html

相关文章:

  • 【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割2(基础数据流篇)
  • HDR图像处理软件 Photomatix Pro mac中文版新增功能
  • 【Kotlin精简】第5章 简析DSL
  • 2021年06月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • MySQL执行计划分析
  • 【数据结构与算法】Snowflake雪花算法Java实现
  • 重要功能更新:妙手正式接入SHEIN供货模式(OBM)店铺,赋能卖家把握出海新机遇!
  • 和鲸ModelWhale与中科可控X系列异构加速服务器完成适配认证,搭载海光芯片,构筑AI算力底座
  • Vue单文件组件
  • 轻松理解 Transformers(1):Input部分
  • PHP MySQL 交互 笔记/练习
  • 领域驱动设计:基于DDD的微服务设计实例
  • 【PB续命02】Oracle中加密及编码等
  • STM32-LTC6804方案成熟BMS方案
  • 一步一步认知机器学习
  • 现代C++、STL、QTL的使用
  • Android 备案公钥、签名 MD5获取方法
  • 1688拍立淘接口,按图搜索商品接口,图片识别接口,图片上传搜索接口,图片搜索API接口,以图搜货接口
  • H3C AC通过Web平台进行AC软件的升级?
  • 网络通信和tcp协议
  • React 核心与实战2023版
  • 在 Android 上测试 Kotlin 协程
  • 图论04-【无权无向】-图的广度优先遍历BFS
  • vue3 v-model的使用
  • Ubuntu 20.04 安装 Docker
  • vue el-dialog弹出框自定义指令实现拖拽改变位置-宽度-高度
  • 玄铁C906——物理内存保护(PMP)介绍
  • 【进阶C语言】编译与链接、预处理符号详解
  • spring.profiles生效顺序
  • 【经典PageRank 】02/2 算法和线性代数