基于Android和OpenCV的答题卡识别软件

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

基于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
权重设置为1

在这里插入图片描述
权重设置为5

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值