基于OpenCV的答题卡识别

OpenCV是一款通用的图形处理方面的类库,对图片的处理提供了各种各样的操作。考试里面的选择题非常多,用人工去判卷显然非常不合算,所以考虑用OpenCV实现自动识别选项,项目基于https://github.com/inuyasha2012/answer-sheet-scan,这是github上一个用python写的答题卡识别程序,在项目的git提交记录找了好久才发现一个可以识别公司图像的提交,但是发现代码不完善,主要是参数需要调整,图片亮度调节代码效率太低,如果一个图片像素太高会导致时间非常长,因为图片都是用户自己拍照上传的,他们的手机像素和拍照亮度,光线的均匀程度千奇百怪,所以识别率不高,这也是一个难点,自己在改进过程中也遇到很多困难,主要表现就是参数调节很难同时识别所有的图片。还有程序 对识别到的题目个数和预期个数不一致时候没有选项补全处理,直接放弃识别当失败处理。个人根据不断的调试参数,虽然提高了成功率,但是依旧没有办法和大公司的产品比,对图片拍摄也尽量要求在光线均匀的情况下,并且好好正规填涂才能识别。

代码地址:https://gitee.com/xiaobai1993/scanAnswer,
包含了个人调试记录。

个人更改:

1.根据业务更改了部分代码逻辑。
2.替换了原来耗时的调整图片亮度的代码
3.更改了部分图片答案和选项识别算法或参数
4.当选项个数不正确的时候能够根据已有的选项尝试计算未被识别的轮廓。
5.在识别选项是否填涂方面加了些额外的处理策略,不是固定黑色面积占据选项的面积比例。
6.增加了些调试代码,更便于调试参数。

原始图片.png
识别边框.png
纠正位置.png
基于OpenCV的答题卡识别_第1张图片
高亮图片.png
基于OpenCV的答题卡识别_第2张图片
识别选项.png
基于OpenCV的答题卡识别_第3张图片
识别填涂答案.png
红色标注识别的区域.png

你可能感兴趣的:(基于OpenCV的答题卡识别)