该程序是一个基于Python的答题卡识别工具,使用OpenCV和Tkinter库来实现图像处理和用户界面。它能够扫描并识别答题卡上的填涂答案,并将结果保存到Excel文件中。
- 图像加载与预处理:从本地选择答题卡图片,进行灰度化、高斯模糊和边缘检测等预处理操作。
- 轮廓检测与透视变换:通过查找轮廓并进行透视变换,将答题卡调整为标准矩形视图。
- 关键点识别:识别答题卡上的关键点(如题目选项区域),并通过计算非零像素值确定填涂的答案。
- 结果显示:在界面上显示识别出的答案,并提供保存到Excel文件的功能。
- 参数设置:用户可以通过界面输入答题卡的行数和总题数,以适应不同格式的答题卡。
双击运行sheetrecognition.py文件,启动程序主窗口。
在主窗口中,根据答题卡的实际格式,设置以下参数:
- 选项行数:每页答题卡上选项的行数,默认值为16。
- 题目总数:答题卡上的总题数,默认值为32。
点击“选择图像”按钮,从本地文件系统中选择一张答题卡图片。
程序会自动处理所选图片,并在界面上显示识别出的答案。如果识别成功,答案将以题号和选项的形式展示在右侧文本框中;同时,处理后的图像也会显示在界面上。
在“结果保存至”输入框中指定保存路径和文件名(默认为result.xlsx),然后点击“保存”按钮,将识别结果保存到Excel文件中。
- 确保选择的答题卡图片清晰且完整,避免因图片质量问题导致识别失败。
- 如果识别结果不正确,请检查并调整“选项行数”和“题目总数”的设置。
- 程序依赖于OpenCV、Tkinter等库,请确保这些库已正确安装。
- 加载图像:使用
cv2.imread()读取图片。 - 预处理:将图片转换为灰度图,并进行高斯模糊处理,最后使用Canny算法进行边缘检测。
- 轮廓检测:通过
cv2.findContours()查找图像中的轮廓,并筛选出符合要求的矩形区域。 - 透视变换:对筛选出的矩形区域进行四点透视变换,将其调整为标准矩形视图。
- 关键点识别:在透视变换后的图像中,识别每个选项区域,并通过计算非零像素值确定填涂的答案。
使用Tkinter库创建图形用户界面,包含以下几个主要组件:
- 输入框:用于设置答题卡的行数和总题数。
- 按钮:用于选择图像、保存结果等操作。
- 标签:用于显示处理后的图像和识别结果。
- 无法加载图像:请确保选择的图片路径正确且图片格式支持(JPEG、PNG等)。
- 识别结果为空:检查答题卡图片是否清晰,或调整“选项行数”和“题目总数”的设置。
- 保存失败:请确保保存路径有效且具有写入权限。
希望这份说明书能帮助您更好地理解和使用本程序。祝您使用愉快!