【A329】基于Python+OpenCV答题卡识别和评测

2022-06-04 18:09:41      索炜达电子      1085     

文件编号: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"])。

划分各个涂卡区域

答题卡上有答题区域、学号区域、科目区域,这些区域都有固定的相对位置和相对大小,因此在寻找若干次矩形轮廓并排除掉最大的区域后(切图实现),可在剩余的图里找轮廓以确定区域。

确定选项的值与对应题号

对答题卡进行透视变换后,每个位置对应的选项和题号都是固定的,通过人为的测量一些位置并记录,即可确定每个坐标对应的选项与题号。

按需写作:

【A329】基于Python+OpenCV答题卡识别和评测

演示视频:

【A329】基于Python+OpenCV答题卡识别和评测

点击查看:系统演示视频

运行结果:

【A329】基于Python+OpenCV答题卡识别和评测

【A329】基于Python+OpenCV答题卡识别和评测

远程协助:

温馨提示:索炜达.猿创官方提供收费远程协助,确保您项目运行成功。

点击查看:远程协助相关事项

我们提供完整项目文件清单如下:

文件目录

 ├ 1.项目源码

 ├ 2.运行截图

 └ 3.演示视频

TAG答题卡
  • 6 次
  • 1200 分