2022-06-04 18:09:41 索炜达电子 1705
文件编号:A329
文件大小:29M
开发环境:Python3.8、OpenCV4.5、PyCharm2020
猿创承诺:该项目亲测正常运行,需远程调试部署需另外收费,确保正常使用,不能正常使用全额退款。
简要概述:程序支持对一类固定模板的答题卡进行检测选项、校对答案的功能。用户只需拍摄一张角度偏差较小、亮度适中的答题卡照片,再提供标准答案文件,即可进行答题卡的扫描与答案评测。
**由于采用了比较简单的检测方法,所以对图片的要求较高,最好在答题卡下面放置一张空白A4纸进行拍照,拍的照片不要有过大角度倾斜,拍到的卡要完整,照片内不要有其他干扰物品。**
使用说明:
到目录下运行excute.py,选择答题卡图片、标准答案文件后,可比对答案并给出对错和正确率评判。
环境变量中需有python3环境,需要cv2、pyqt5的依赖包。
python excute.py
文件说明:
sheet.py -- 读取/扫描答题卡的功能函数
mainwindow.py -- 界面类
excute.py -- 启动程序
test/ -- 正常的测试的图片和答案文件
在运行过程中,当前目录下出现的jpg文件是过程中产生的临时文件
相关技术:
寻找图形轮廓
寻找一个图形轮廓前,需要先对输入的图片的一个复制进行以下几个操作:
1. 转换成灰度图
2. 进行高斯模糊以消除噪声、模糊细节
3. 用Canny边缘检测获取图中的所有轮廓
4. 在轮廓图中获取所有轮廓并用极点表示
然后将所有轮廓按照大小进行降序排序,在应用中认为最大的一个矩形轮廓(有4个极点)就是答题区域的边缘矩形。找到的极点坐标在原图上也是在相同的位置。
四点透视变换调整图片
手机拍摄的图片会有一些角度的偏转,可以找到四个矩形的极点后,基于这四个极点对整张图片进行四点透视变换,把图片调整正,以方便进一步的使用。
找到涂黑的选项的坐标位置
对于二值化后的图找轮廓,然后对轮廓进行矩形拟合,如果找到了跟选项框大小相近的轮廓,就认为是涂黑的选项,然后对这个轮廓求矩值,由这个公式可求出轮廓的重心:cX=int(M["m10"]/M["m00"]),cY=int(M["m01"]/M["m00"])。
划分各个涂卡区域
答题卡上有答题区域、学号区域、科目区域,这些区域都有固定的相对位置和相对大小,因此在寻找若干次矩形轮廓并排除掉最大的区域后(切图实现),可在剩余的图里找轮廓以确定区域。
确定选项的值与对应题号
对答题卡进行透视变换后,每个位置对应的选项和题号都是固定的,通过人为的测量一些位置并记录,即可确定每个坐标对应的选项与题号。
按需写作:
演示视频:
点击查看:系统演示视频
运行结果:
远程协助:
温馨提示:索炜达.猿创官方提供收费远程协助,确保您项目运行成功。
点击查看:远程协助相关事项
我们提供完整项目文件清单如下:
文件目录
├ 1.项目源码
├ 2.运行截图
└ 3.演示视频