美文网首页
整张答题卡识别原理( 答题卡处理1:轮廓)

整张答题卡识别原理( 答题卡处理1:轮廓)

作者: 大龙10 | 来源:发表于2023-10-23 12:36 被阅读0次

书名:计算机视觉40例从入门到深度学习:OpenCV-Python
作者:李立宗
出版社:电子工业出版社
出版时间:2022-07-01
ISBN:9787121436857


  • 答题卡处理1
    找到答题卡的轮廓

第9章 答题卡识别

9.2 整张答题卡识别原理

9.2.2 答题卡处理

  • 将答题卡铺满整个页面(倾斜校正、删除无效边缘),将选项处理为白色,背景处理为黑色。

  • 答题卡的处理,需要解决如下几个核心问题。
    ● 问题1:如何从众多轮廓中找到答题卡的轮廓?
    ● 问题2:如何对答题卡进行倾斜校正、裁剪掉扫描的边缘?
    ● 问题3:如何实现前景、背景的有效处理?
    ● 问题4:如何找到答题卡内所有选项?

1、问题1:如何从众多轮廓中找到答题卡的轮廓

  • 在将答题卡铺满整个页面前,最重要的步骤是判定哪个轮廓是答题卡的轮廓。也就是说,需要先找到答题卡,再对其处理。

  • 通常情况下,将函数findContours的method参数值设定为cv2.CHAIN_APPROX_SIMPLE,
    当它识别到矩形时,就会使用4个顶点来保存其轮廓信息。
    因此,可以通过判定轮廓是否用4个顶点表示,来判定轮廓是不是矩形。

  • 这个方法简单易行,但是在扫描答题卡时,可能会发生失真,使得原本是矩形的答题卡变成梯形。
    此时,简单地通过轮廓的顶点个数判断对象是否是答题卡就无效了。

  • 不过,在采用逼近多边形拟合轮廓时,可以使用4个顶点拟合梯形。
    因此,通过逼近多边形的顶点个数可以判定一个轮廓是否是梯形:
    若一个轮廓的逼近多边形是4个顶点,则该轮廓是梯形;
    否则,该轮廓不是梯形。

2、程序

  • 本例中,分别展示了矩形、梯形的轮廓、逼近多边形的顶点个数。
# -*- coding: utf-8 -*-
"""
Created on Thu Oct 19 10:17:50 2023

@author: dalong10
"""

import cv2

def cstNum(x):
    gray = cv2.cvtColor(x,cv2.COLOR_BGR2GRAY) 
    ret, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY) 
    cts, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 
    print("轮廓具有的顶点个数:",len(cts[0]))
    peri = 0.01*cv2.arcLength(cts[0],True)
    #获取多边形的所有顶点,如果是 4 个顶点,就代表轮廓是矩形
    approx=cv2.approxPolyDP(cts[0],peri,True)
    #打印顶点个数
    print("逼近多边形的顶点个数:",len(approx))
        
# ====读取原始图像====
o1 =  cv2.imread('d:\\OpenCVpic\\XTest1.jpg')  
cv2.imshow('o1', o1)
o2 =  cv2.imread('d:\\OpenCVpic\\XTest2.jpg')  
cv2.imshow('o2', o2)

print("首先,观察一下梯形:")
cstNum(o1)
print("接下来,观察一下矩形:")         
cstNum(o2)          

cv2.waitKey()
cv2.destroyAllWindows()

运行结果
输出数据

3、分析

  • 从上述程序输出结果可以看出,梯形的轮廓具有非常多个顶点,但是其逼近多边形只有4个顶点。扫描后的答题卡通常是一个梯形,据此可以判断在众多轮廓中哪个轮廓对应的是答题卡。

  • 除此之外,还有一个方法是在找到的众多轮廓中,面积最大的轮廓可能是答题卡。因此,可以将面积最大的轮廓对应的对象判定为答题卡。

相关文章

  • 用Python实现答题卡识别!

    答题卡素材图片: 1.读入图片,做一些预处理工作。 2.进行轮廓检测,然后找到该图片最大的轮廓,就是答题卡部分。 ...

  • 用Python实现答题卡识别!

    答题卡素材图片: 思路 1.读入图片,做一些预处理工作。 2.进行轮廓检测,然后找到该图片最大的轮廓,就是答题卡部...

  • 弟弟笑话

    弟弟高三考试,发生了些搞笑的事情。 考试时,老师发下答题卡,弟弟拿了两张答题卡,答题卡前后两面黏在一起。后面的...

  • 2022-05-14

    人生如答题卡 静寂的考场传来“请发答题卡,把条形码粘贴在相应位置”指示,我和莉莉把十张一沓的答题卡发送到每一列的第...

  • 💦20221031-1102日记录总结

    【10月31日星期一】 上午改作业、备课,去帮剩下几科没拿大联考答题卡的科目拿答题卡回来给他们。测核酸,处理...

  • 〔两行哥〕OpenCV4Android教程之安卓答题卡识别

    这是一个基于OpenCV的Android答题卡识别Demo,源码已经上传至码云:AnswerSheetScanDe...

  • 2018-01-25

    1.选择题做完就填答题卡 这是针对考试会有答题卡的考生,为避免非智力因素失分,一般每门一做完选择题就填答题卡。这时...

  • 高考日近,得开始关注高考考场那些事了。

    1. 选择题做完就填答题卡 避免非智力因素失分,一般每门一做完选择题就填答题卡。这时填答题卡心态较平静,不会因为担...

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

    基于Android和OpenCV的答题卡识别软件 1. 软件介绍 设计目标是可以添加不同的考试,在不同考试下可以设...

  • 坏孩子是教出来的

    高考期间,有位同学,不会答题,竟把旁边同学的答题卡撕破,在事发学校紧急启用备用答题卡,补足答题卡被损毁的两位...

网友评论

      本文标题:整张答题卡识别原理( 答题卡处理1:轮廓)

      本文链接:https://www.haomeiwen.com/subject/oitcidtx.html