# 数字图像处理实践项目:文件扫描软件 *--- 小组成员: 姜业恒 10205101498 ---* ## 概述 本项目为数字图像处理期末的实践项目, 包括了第一项和第二项的要求。 本项目不仅实现了《数字图像处理》课程教学中的主要内容, 还增加了实际应用的场景, 即:将使用普通照相机或手机的摄像头拍摄的文档图片转化为易于识别的类似于扫描得到的图片。 ## 项目结构 - readme.md --- 本文件 - requirement.txt --- 项目需要的依赖, 可通过pip安装 - img_util/ --- python模块, 实现了课程中的主要内容, 每个子模块的内容在文件的注释中都有详细解释, 其中有一些功能由于opencv已经有使用起来非常简单的实现, 所以仅在注释中标注出来 - resource/ --- 存放readme.md需要的资源文件 - main.py --- 程序入口, 运行此文件开始程序 ## 应用程序介绍 本项目通过课程中的各种知识, 实现了一个可以在实际场景中应用的程序——“简单扫描”。此程序可以将普通照相机或手机拍摄的文档图片转化为易于识别的类似于扫描得到的图片的功能. 具体来说, 这个应用程序可以读取一张图片, 并可以根据需要调整为原图、灰度、黑白三种模式, 黑白模式可以选择自动或手动调整阈值; 另外, 还可以将图片中的透视关系进行矫正。最终, 可以将操作过后的图片进行保存。 ## 应用程序用法 1. 检查运行环境 首先查看python的版本, 考虑到兼容性问题, 最好使用python 3.9以上的版本运行程序; 另外, 通过"`pip install -r requirement.txt`"命令可以通过requirement.txt文件自动安装本程序需要的依赖库 2. 运行程序 运行环境配置无误后, 运行main.py启动程序, 界面如下图所示 ![img_main](resource/img_main.png) 3. 选择图片与更改模式 点击界面上方的`选择图片`按钮选择一张输入的图片 ![img_select](resource/img_select.png) 选择完毕后, 界面会展示图片的原图 ![img_orig](resource/img_orig.png) 点击第二排的`灰度`选项, 可以将图片切换到灰度模式 ![img_gray](resource/img_gray.png) 点击第二排的`黑白(自动)`选项, 可以将图片切换到黑白模式, 但是其阈值是由程序自动判断得到的 ![img_bw](resource/img_bw.png) 点击第二排的`黑白(手动)`选项, 可以将图片切换到黑白模式, 但是其阈值是需要手动调整右侧的滑动条来确定 ![img_bw_hand](resource/img_bwhand.png) 4. 视角透视矫正 某些时候, 拍摄的视角并非是正对文档的, 需要进行透视的矫正, 这时候可以点击第一排的`透视矫正`进行矫正 点击之后, 可以看到弹出了帮助窗口 ![img_pers_1](resource/img_pers_1.png) 点击`确定`以后, 弹出新的窗口, 需要以左上角、右上角、右下角、左下角的顺时针顺序以`Ctrl`+单击的方法确定图片中需要矫正的区域的四个角 ![img_pers_2](resource/img_pers_2.png) 接下来, 如误选了顶点, 可以使用`R`键清除; 如果不想继续矫正, 可以使用`Esc`退出; 如果已经确定, 可以使用`Enter`键确定 ![img_pers_3](resource/img_pers_3.png) 5. 保存 处理完毕后, 点击第一排的`保存`按钮即可保存文件 ![img_save](resource/img_save.png) 6. 应用程序效果 处理前: ![img_input](resource/example.jpg) 处理后: ![img_output](resource/output.png)