编号: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.演示视频
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者文档,可以与我们交换,分享有积分奖励和额外收入!
4. 本站提供的源码、文档等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"www.2zcode.com",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:网站内的所有源码都经过我们亲自测试,均可以正常使用.
索炜达.猿创 » 基于Python+OpenCV答题卡识别和评测(显示正确率)
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 你们有qq群吗怎么加入?