转自国外opencv教育网站免费教程:

https://www.pyimagesearch.com/2016/10/03/bubble-sheet-multiple-choice-scanner-and-test-grader-using-omr-python-and-opencv/

使用OMR,Python和OpenCV的气泡板多选扫描仪和测试分级机

作者: Adrian Rosebrock 于 201610月3日 在 图像处理,教程中

在过去的几个月里,我已经收到大量的请求登陆我的收件箱,以使用计算机视觉和图像处理技术构建一个泡泡板/类似Scantron的测试阅读器。

虽然我在机器学习和深度学习这个系列中玩得很开心,但如果我说这个小小的项目并不是一个短暂的,欢迎的休息时间,我会  说谎。我最喜欢运行PyImageSearch博客的部分之一是演示如何使用计算机视觉构建  问题的实际解决方案。

事实上,这个项目  如此特别的原因在于我们将结合以前许多博客文章中的技术  ,包括构建文档扫描程序,轮廓排序和透视变换。利用从以前的帖子中获得的知识,我们将能够快速完成这个气泡板扫描仪和测试分级机。

你看,上周五下午我快速上了一个示例泡泡试卷,打印出几份副本,  然后开始编写实际实现的编码。

总的来说,我对这个实现非常满意,我认为你绝对可以使用这个bubble bubble grader / OMR系统作为你自己项目的起点。

要了解有关利用计算机视觉,图像处理和OpenCV自动评定气泡测试表的更多信息,  请继续阅读。

寻找这篇文章的源代码?
跳到下载部分。

使用OMR,Python和OpenCV的气泡板扫描仪和测试分级机

在本博文的其余部分,我将讨论光学标记识别(OMR)究竟  是什么。然后,我将演示如何使用严格的计算机视觉和图像处理技术以及OpenCV库来实现气泡板测试扫描仪和分级机  。

一旦我们实施了OMR系统,我将在一些示例考试中提供我们的考试评分员的样本结果,包括那些充满邪恶意图的考试。

最后,我将讨论当前气泡板扫描仪系统的一些缺点,以及我们如何在未来的迭代中对其进行改进。

什么是光学标记识别(OMR)?

光学标记识别(简称OMR)是  自动分析人工标记文档并解释其结果的过程。

可以说,OMR最着名,易于识别的形式是  泡泡纸多项选择测试,与你在小学,初中甚至高中时所采用的测试不同。

如果您不熟悉“气泡纸测试”或“Scantron测试”的商标/公司名称,它们只是您作为学生的多项选择测试。考试中的每个问题都是多项选择 - 您使用#2铅笔标记对应于正确答案的“气泡”。

在填写大学录取申请之前,您经历过的最值得注意的泡泡板测试(至少在美国)是在高中期间参加SAT考试。

我  相信 SAT使用Scantron提供的软件来执行OMR和年级学生考试,但我很容易在那里出错。我只注意到这一点,因为Scantron在美国98%以上的学区使用。

简而言之,我想说的是,光学标记识别有一个  巨大的市场,并且能够对人类标记的形式和考试进行评级和解释。

使用OMR,Python和OpenCV实现气泡板扫描仪和分级器

现在我们已经了解了OMR的基础知识,让我们使用Python和OpenCV构建一个计算机视觉系统,可以  读取和  评估气泡板测试。

当然,我将提供大量的视觉示例图像,以便您可以  准确理解我正在应用的技术以及  我使用它们的原因。

下面我列出了一个填写泡泡板考试的例子,我已经为这个项目整理了一个:

图1:我们将在开发测试扫描仪软件时使用的填充气泡板的示例。

当我们完成构建测试分级器的步骤时,我们将使用它作为示例图像。在本课程的后面部分,您还可以找到其他样本考试。

我还将空白考试模板作为.PSD(Photoshop)文件包含在内,  以便您可以根据需要进行修改。您可以使用本文底部的  “下载”部分下载代码,示例图像和模板文件。

构建气泡板扫描仪和平地机的7个步骤

这篇博客文章的目标是使用Python和OpenCV构建一个气泡表扫描程序和测试分级程序。

为实现这一目标,我们的实施需要满足以下7个步骤:

  • 步骤1:检测图像中的检查。
  • 步骤#2:应用透视变换以提取自上而下的鸟瞰视图。
  • 步骤#3:从透视变换检查中提取气泡集(即可能的答案选项)。
  • 步骤#4:将问题/气泡排序成行。
  • 步骤#5:确定每行的标记(即“冒泡”)答案。
  • 步骤#6:在我们的答案键中查找正确的答案,以确定用户的选择是否正确。
  • 第7步:重复考试中的所有问题。

本教程的下一部分将介绍我们算法的实际  实现

使用Python和OpenCV实现泡泡板扫描程序

要开始,请打开一个新文件,将其命名为 test_grader 。py  ,让我们开始工作:

    <div id="crayon-5d52be9f4eb30930014621" class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" style="margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important; height: auto;"><div class="crayon-toolbar" data-settings=" show" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><span class="crayon-title">Bubble sheet scanner and test grader using OMR, Python and OpenCV</span><div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><div class="crayon-button crayon-nums-button crayon-pressed" title="Toggle Line Numbers"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-plain-button" title="Toggle Plain Code"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-wrap-button" title="Toggle Line Wrap"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-expand-button" title="Expand Code" style="display: none;"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-copy-button" title="Copy"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-popup-button" title="Open Code In New Window"><div class="crayon-button-icon"></div></div><span class="crayon-language">Python</span></div></div><div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;"></div><div class="crayon-plain-wrap"><textarea wrap="soft" class="crayon-plain print-no" data-settings="" readonly="" style="tab-size: 4; font-size: 12px !important; line-height: 15px !important; z-index: 0; opacity: 0; overflow: hidden;"># import the necessary packages

http://www.taodudu.cc/news/show-5701660.html

相关文章:

  • 安利!快速识别图像光学标识!Aspose.OMR助你获取图像中的数据
  • 示例:教你在.NET应用程序中创建OMR工作表扫描仪软件
  • 面向对象延伸至SQL/OMR
  • Patch:Aspose.OMR for .NET 22.11.X
  • Aspose.OMR for .NET 22.11.X Crack
  • OMR数据查询
  • django的OMR
  • 人工智能项目实战-使用OMR完成答题卡识别判卷
  • 百度网盘关闭同步空间的方法
  • Hololens2眼镜视角内关闭CPU框与空间网格
  • oracle回滚表空间的操作
  • oracle查找不到表空间,Oracle 一些表空间问题的处理
  • oracle查看pdb表空间,管理与使用PDB的表空间
  • linux开启关闭删除交换空间
  • 春节临近 青海彩民喜获双色球万元大礼包
  • 瑞虎迎春,开源新年礼包天天送,立即打卡集好礼!
  • 元宵节礼包来了,程序员的福利来了!!!
  • 程序员春节回家装逼反击指南!
  • 春节红包
  • 某休闲游戏春节活动数据复盘
  • 春节大礼包|刷题技巧+80道Leetcode
  • 支付宝企业认证失败,原因及解决方法
  • 支付宝摘下客服界的“奥斯卡”奖 支付宝的D+服务厉害在哪?
  • 支付宝资金预授权开通客户端授权与案例讲解
  • 如何调用支付宝接口
  • 支付宝6轮面试经验
  • 从两通客服电话看支付宝和快钱
  • 关于支付宝集成在APP中
  • 支付宝踩坑记 | 如何帮公司避免一场在线支付事故
  • android x86 支付宝,亿级APP支付宝在移动端的高可用技术实践

Bubble sheet multiple choice scanner and test grader using OMR, Python and OpenCV相关推荐

  1. Java multiplechoice,雅思听力八大题型之Multiple Choice题型篇

    雅思听力考试有8大题型,上海新航道雅思培训班会一一为大家分享,今天为大家带来的是Multiple Choice题型,一起来看看吧! 雅思听力八大题型之Multiple Choice题型篇 1.题型介绍 ...

  2. 论文阅读笔记(二):Bridging Video-text Retrieval with Multiple Choice Questions

    文章目录 前言 一.Introduction 二.Method 1.双编码器结构 2.Multiple Choice Questions(MCQ) 3.目标函数 4.模型结构 4.1视频编码器 4.2 ...

  3. Knowledge-Driven Distractor Generation for Cloze-Style Multiple Choice Questions翻译

    摘要 在本文中,我们提出了一种新的可配置框架,可以自动为开放领域完型填空类型的多项选择题生成若干选项.该框架包含一个通用知识库,以高效地构建一个小型的选项候选集,还包含一个特征丰富的 learning ...

  4. python wx模块下choice列表框值怎么更新_wx python

    一.静态文本控件 wx.StaticText(parent, id, label, pos=wx.DefaultPosition,    size=wx.DefaultSize, style=0, n ...

  5. python中multiple函数_关于多处理:在Python中将多个参数传递给pool.map()函数

    本问题已经有最佳答案,请猛点这里访问. 我需要一些方法来使用pool.map()中接受多个参数的函数.根据我的理解,pool.map()的目标函数只能有一个iterable作为参数,但是有没有其他参数 ...

  6. python CV 趣味项目 答题卡识别

    英文原文来自 Bubble sheet multiple choice scanner and test grader using OMR, Python and OpenCV 说到答题卡,满满的都是 ...

  7. 万字长文|如何定义“失败的产品经理”

    前言:总有一种错觉,别人家的产品经理都是神一样,动不动改变世界的那种.就没有失败的产品经理吗? 提出问题的背景 前阵子刚刚和阿里.百度的产品经理聊过产品这块,总结输出了<腾讯产品流程>和& ...

  8. choice() 函数

    描述 choice() 方法返回一个列表,元组或字符串的随机项. 语法 以下是 choice() 方法的语法: import randomrandom.choice( seq ) 注意:choice( ...

  9. 【python】choice函数

    来源:http://www.runoob.com/python/func-number-choice.html 描述 choice() 方法返回一个列表,元组或字符串的随机项. 语法 以下是 choi ...

最新文章

  1. Carrier frequency 和 EARFCN的关系
  2. 【解决】联想thinkpad E40 如何禁用触摸板
  3. TCP连接的建立和终止
  4. springmvc 使用fastjson 处理 json 数据时中文乱码
  5. 电脑销售技巧_汝州市,如何查询楼盘详细销售数据?官方公布,精确到房间
  6. mysql动态扩展_动态可扩展查询MYSQL5.7JSON+虚拟列+Mybatis
  7. linux qgis编译安装,QGIS安装
  8. 来兄弟连了,你还在用面向过程唱高音歌曲的你就OUT了
  9. Linux NTP服务器配置
  10. Eclipse和JDK版本对应关系
  11. IDCC2018|上海数据港股份有限公司副总裁、数据中心首席架构师王海峰:标杆管理驱动数据中心建设变革...
  12. ajax poker,《使命召唤15》大逃杀模式介绍 人物解锁方法一览
  13. 在Textview中获取指定文字位置(兼顾网址链接和emoji表情),并在其附近展示图片
  14. 在树莓派上安装麦克风监测音量
  15. H5移动端如何推送消息
  16. IB学校书单合集请收藏好
  17. Oracle 查询临时表空间
  18. 查询2021高考成绩广西排名,2021广西高考成绩排名顺序查询,广西省高考全省排名怎么查...
  19. MSCKF 2.0 理论推导以及能观性分析
  20. MySQL实现排名、分组筛选、TopN问题

热门文章

  1. 夏皮罗维尔克检验(Shapiro-Wilk test)
  2. C++获取并显示当前时间
  3. 计算机时间格式有几种,计算机的几种时间格式
  4. 五分钟教你如何制作学生期末网页作业(web前端期末大作业)
  5. 【天光学术】微观经济论文:“互联网+”视角下安徽高校网球运动课程(节选)
  6. excel 导出导入
  7. MySQL的GRANT语句
  8. 安装Mysql服务教程
  9. 洪九果品IPO,今年水果自由就靠他!
  10. form表单提交以及用Jquery实现ajax提交form表单