使用 opencv 识别答题卡,生成填涂答案

一般答题卡设计时都在试卷4个角预留4个一样大小的黑块

仅能识别选择题判断题之类的填涂答题的题目,不能识别填空题应用题等其它主观题

使用 opencv 识别试卷图片中所有黑块,再根据黑块大小获取四个角的位置,根据四个黑块位置校正图像

将图像转成灰度图

Cv2.CvtColor(imgOrg, dst, ColorConversionCodes.BGR2GRAY);

 对图像黑白增强处理

Cv2.Threshold(dst, dst, 160, 255, ThresholdTypes.Binary);

 查找所有黑块包括黑块大小位置等信息

Cv2.FindContours(dst, out contours, out hierarchies, RetrievalModes.List, ContourApproximationModes.ApproxNone);

 查找四角黑块的位置,根据黑块位置矫正图像并分析答案

答题卡校正前图像矫正前

答题卡图像矫正后

再根据每道题的位置识别区域内涂写的答案在区域内的位置

根据答案在区域内的位置转换成A B C D选项

输出json

{"n1":"A","n2":"D","n3":"B","n4":"C","n5":"D","n6":"D","n7":"A","n8":"C","n9":"D","n10":"A","n11":"B","n12":"B","n13":"D","n14":"C","n15":"A","n16":"C","n17":"D","n18":"A","n19":"D","n20":"C","n21":"D","n22":"A","n23":"B","n24":"D","n25":"C"}

 最后再与标准答案比对计算得分。

 答题卡识别示例演示

https://d.iyanhong.com/demos/answersheetscan.html

 目前只是简单的处理识别,头一次用opencv,识别方法可能也不是太好,给可能用到的用户提供个思路,要进一步提升识别率也可以用opencv提供的其它方法处理优化图像

最近更新

  1. TCP协议是安全的吗?

    2024-03-18 08:50:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-18 08:50:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-18 08:50:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-18 08:50:02       20 阅读

热门阅读

  1. 【数据库】MySQL数据库基础

    2024-03-18 08:50:02       19 阅读
  2. 如何在MATLAB中进行循环和条件语句?

    2024-03-18 08:50:02       21 阅读
  3. Vue-- 实现简单版 vue-router

    2024-03-18 08:50:02       18 阅读
  4. C语言中大小写字母是如何转化的?

    2024-03-18 08:50:02       23 阅读
  5. Euler angles and Quaterean

    2024-03-18 08:50:02       21 阅读
  6. Leetcode 第388场周赛 问题和解法

    2024-03-18 08:50:02       22 阅读
  7. Redis 的数据类型及使用场景

    2024-03-18 08:50:02       21 阅读
  8. PyTorch学习笔记之激活函数篇(六)

    2024-03-18 08:50:02       17 阅读
  9. redis常见面试题

    2024-03-18 08:50:02       19 阅读
  10. Bean的实例化方式

    2024-03-18 08:50:02       17 阅读
  11. 在类Unix平台实现TCP客户端

    2024-03-18 08:50:02       18 阅读