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

2023-10-23  本文已影响0人  大龙10

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


第9章 答题卡识别

9.2 整张答题卡识别原理

9.2.2 答题卡处理

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

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、分析

上一篇 下一篇

猜你喜欢

热点阅读