赞
踩
-
- """
- 识别答题卡
- """
-
- import cv2
- import numpy as np
-
- def showImg(img_name, img):
- cv2.imshow(img_name, img)
- cv2.waitKey()
- cv2.destroyAllWindows()
-
- def get_max_rect(sorted_cnts):
- for cnt in sorted_cnts:
- # 轮廓近似
- possible_cnts = []
- epsilon = 0.1 * cv2.arcLength(cnt, True)
- approx = cv2.approxPolyDP(cnt, epsilon, True)
- if len(approx) == 4:
- possible_cnts.append(cnt)
- possible_cnts = sorted(possible_cnts, key=lambda x: cv2.arcLength(x, True))
- return possible_cnts
-
- def get_max_bounding_rect(possible_cnts):
- # for cnt in possible_cnts:
- # x, y, w, h = cv2.boundingRect(cnt)
-
- sorted_cnts = sorted(possible_cnts, key=lambda cnt: cv2.boundingRect(cnt)[2]*cv2.boundingRect(cnt)[3], reverse=True)
- print(sorted_cnts[0])
-
- def show_countour(img, cnt):
- img_copy = img.copy()
- cv2.drawContours(img_copy, cnt, -1, (0,255, 0), 3)
- showImg("img_copy", img_copy)
-
-
- # 读取答题卡图片,并显示
- answer_sheet_img = cv2.imread("t1.jpg")
- print(answer_sheet_img.shape)
- showImg("answer_sheet_img", answer_sheet_img)
-
- # 高斯滤波,去除噪音
- blur = cv2.GaussianBlur(answer_sheet_img,(5,5),0)
- showImg("blur", blur)
-
- # 图像转灰度值
- sheet_gray = cv2.cvtColor(blur, cv2.COLOR_BGR2GRAY)
- showImg("sheet_gray", sheet_gray)
-
- # 二值化
- retval, sheet_threshold = cv2.threshold(sh
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。