# doc_scanner_homework **Repository Path**: long-breeze/doc_scanner_homework ## Basic Information - **Project Name**: doc_scanner_homework - **Description**: 这个项目是一个文档扫描仪应用程序,使用Python编写。它可以帮助用户加载图片并裁剪文档,提供方便的文档扫描功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 301 - **Created**: 2026-05-07 - **Last Updated**: 2026-05-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # doc_scanner ## 项目描述 这个项目是一个文档扫描仪应用程序,使用 Python 编写。它可以帮助用户加载图片并裁剪文档,提供方便的文档扫描功能。 ## 项目运行效果截图 ![输入图片说明](image.png) ## 功能特性 - **图片选择**:通过点击 "Select Image" 按钮选择要加载的图片。 - **自动角落检测**:使用 Canny 边缘检测和轮廓识别自动找到文档四角。 - **手动调整**:可以拖动绿色圆点手动调整角落位置。 - **文档裁剪**:点击 "Crop" 按钮进行透视变换,将文档从图片中提取出来。 - **鼠标跟踪**:勾选 "Show Mouse Move" 复选框可以在终端显示鼠标移动信息。 ## 技术实现 ### 核心算法流程 1. **图片预处理**:将图片转换为灰度图并进行高斯模糊 2. **边缘检测**:使用 Canny 算法检测图像边缘 3. **轮廓提取**:查找图像中的所有轮廓并按面积排序 4. **四边形识别**:通过多边形逼近找到四边形轮廓 5. **透视变换**:根据四个角落坐标进行透视变换,展平文档 ### 文件结构 ``` doc_scanner/ ├── main.py # 主入口文件,GUI界面实现 ├── doc_scanner.py # 文档扫描核心功能模块 ├── doc.jpg # 测试图片1 ├── doc_2.jpg # 测试图片2 ├── screenshot.png # 运行效果截图(需手动添加) └── README.md # 项目说明文档 ``` ## 依赖 该项目依赖以下库: - **tkinter**:用于创建 GUI 应用程序(Python 内置) - **PIL (Pillow)**:用于图片格式转换 - **OpenCV (cv2)**:用于图片处理和计算机视觉任务 - **numpy**:用于进行数值计算 可以使用以下命令安装所需依赖: ```bash pip install opencv-python numpy Pillow ``` ## 使用方法 1. **安装依赖** ```bash pip install opencv-python numpy Pillow ``` 2. **运行程序** ```bash python main.py ``` 3. **操作步骤** - 点击 "Select Image" 按钮选择要加载的图片 - 观察自动检测到的文档角落(绿色圆点标记) - 如需调整,拖动绿色圆点手动调整角落位置 - 点击 "Crop" 按钮裁剪文档 - 勾选 "Show Mouse Move" 复选框可在终端显示鼠标坐标 ## 代码说明 ### main.py(主入口) - 创建 Tkinter GUI 窗口 - 实现用户交互界面(按钮、复选框、画布) - 处理鼠标事件(点击、拖动、移动) - 显示图片和角落标记 ### doc_scanner.py(核心模块) - `load_image()`:加载图片并检测文档角落 - `order_points()`:对四个角落点进行排序(左上、右上、右下、左下) - `crop_image()`:根据角落坐标裁剪并展平文档 - `get_image_dimensions()`:计算目标图片尺寸 ## 注意事项 - 本项目仅支持基于 Python 的脚本文件 - 请确保已安装所需的依赖库 - 支持中文路径图片加载 - 建议使用文档边缘清晰的图片以获得更好的检测效果 ## 个人信息 - 学号: 202452320126 - 年级: 2024级 - 专业: 智能科学与技术 - 班级: 1班