这是一个基于 Python 和 Gradio 构建的交互式图像处理Web应用。用户可以上传图片(如包含文档、票据等),系统会自动进行边缘检测、透视矫正,并应用自适应二值化来增强图像。应用界面还提供了多个可调节参数,以便用户实时观察不同参数设置对处理结果的影响。
- 图像上传: 支持通过文件上传、摄像头拍摄或剪贴板粘贴的方式导入图片。
- 边缘检测: 使用 Canny 边缘检测算法识别图像中的主要边缘。
- 轮廓查找与筛选: 找到最大的轮廓,通常对应图像中的主要对象(如文档边缘)。
- 透视矫正: 根据检测到的轮廓角点,对图像进行透视变换,以校正倾斜或变形的图像。
- 自适应二值化: 对矫正后的图像应用自适应阈值处理,生成清晰的黑白二值图像。
- 参数可调:
- Canny 边缘检测的低阈值和高阈值。
- 边缘膨胀操作的迭代次数。
- 自适应阈值处理的窗口大小和 Beta 系数。
- 实时预览:
- Canny 边缘检测结果图。
- 在原图上绘制检测到的轮廓图。
- 透视矫正后的彩色效果图。
- 最终处理的二值化结果图。
- 界面友好: 使用 Gradio 构建,提供简洁直观的 Web 用户界面,包括滑块调节参数和示例图片加载。
-
克隆/下载项目: 获取项目代码到您的本地计算机。
-
安装依赖: 确保您的 Python 环境中安装了必要的库。您可以使用 pip 来安装它们:
pip install .或者
pip install -r requirements.txt
-
运行应用: 在项目根目录下,通过命令行运行 Python 脚本 (假设脚本文件名为
app.py,请根据您的实际文件名修改):python app.py
-
访问应用: 脚本成功运行后,终端会显示一个本地 URL (通常是
http://127.0.0.1:7860或类似的地址)。在您的网页浏览器中打开此 URL 即可开始使用该应用。
app.py(或您的主脚本文件名): 包含所有图像处理逻辑和 Gradio 界面定义的 Python 脚本。examples/: (可选/自动生成) 存放示例图片的文件夹。
通过界面左侧的滑块,您可以调整以下参数:
- Canny 低阈值 (Thresh1): Canny 算法的第一个阈值,用于边缘连接。较小的值会检测到更多较弱的边缘。
- Canny 高阈值 (Thresh2): Canny 算法的第二个阈值,用于初步标记强边缘。建议 Thresh2 的值是 Thresh1 的 2 到 3 倍。
- 边缘膨胀次数 (Dilation Iter.): 对检测到的边缘进行膨胀处理的次数。增加此值可以使边缘线条更粗,有助于闭合小的断裂。设置为 0 则不进行膨胀。
- 自适应阈值窗口 (Win Size - odd): 计算局部均值时使用的邻域窗口大小。必须是奇数。窗口越大,对局部光照变化的适应性越粗略。
- 自适应阈值 Beta (Beta Coeff.): 一个常数,从计算出的均值中减去(或乘以一个系数后比较)。调整此值可以使二值化结果整体偏亮或偏暗。
应用界面右侧会以 2x2 网格的形式显示以下四个中间及最终处理结果:
- Canny 边缘: 经过 Canny 边缘检测算法处理后的灰度图像,显示检测到的边缘。
- 轮廓检测: 在调整尺寸后的原始彩色图像上,用绿色线条绘制出的面积最大的轮廓。
- 透视矫正图: 对原始彩色图像应用透视变换后的结果,主要对象应被校正为矩形。
- 最终结果: 对透视矫正图应用自适应二值化后的黑白图像。
- 图像处理的效果很大程度上取决于输入图像的质量和内容。
- 对于非常复杂或低对比度的图像,可能需要仔细调整参数才能获得理想结果。
- 如果透视变换所需的四个角点无法准确检测(例如,对象边缘不清晰或被遮挡),矫正效果可能会不佳。