基于Android和OpenCV的答题卡识别软件
1. 软件介绍
设计目标是可以添加不同的考试,在不同考试下可以设置模板,包括题目数量、答题卡样式、每题分值以及每题答案;扫描结果按列表显示,并讲识别出的图片展示处理,点击列表项也可以弹出识别结果。
扫描答题卡可以从相机或者相册中选择。



2.识别原理介绍
以下主要介绍两个核心部分:获取答题区域和识别用户填涂选项。
2.1获取答题区域及矫正
2.1.1总体流程介绍
获取答题区域,首先要对原始的彩色图像进行预处理操作,包括转灰度图像、高斯模糊、边缘检测等,然后从得到的图像寻找轮廓,并对轮廓进行一定的筛选,接着求出答题卡矩形顶点的坐标,利用坐标进行透视变换从而得到答题区域。总体流程图如图所示。

2.1.2 图像预处理
在获取答题区域之前,需要对图片进行预处理。首先将用户输入的原始图像转化为灰度图像,以减少后续对图像处理的运算复杂度。然后使用高斯滤波(3*3)对图像去噪,再利用Sobel算子分别求出图像在X和Y方向上的梯度,将他们进行叠加以获取边缘。
在进行叠加时,对两个图像的叠加权重适当加大,否则可能导致边缘不够清晰使甚至断开寻找轮廓失败。权重设置为1,可以理解为X、Y方向的图像进行叠加,可以看到矩形的右边缘不太清晰,在图片质量差的情况下可能会发生断裂不完整,使后续查找矩形轮廓时失败。 权重设置为5,可以理解为将X、Y方向的图像进行5次叠加,原本不太清晰的边缘经过多次叠加后变得清晰。

权重设置为1

权重设置为5
在完成边缘检测后,可以看到图像还是存在很多细小的噪点,为了

该博客介绍了基于Android和OpenCV的答题卡识别软件,详细阐述了获取答题区域及识别填涂答案的过程,包括图像预处理、轮廓寻找、坐标计算、透视变换以及填涂区域的识别。测试结果显示软件能成功识别各种情况下的答题卡,但也指出了一些局限性,如题目数量较少时的误判问题和兼容性问题。
最低0.47元/天 解锁文章

2454

被折叠的 条评论
为什么被折叠?



