【发布时间】:2018-07-01 18:02:36
【问题描述】:
我想从图像中检测纸张。我应用了 medianBlur、Canny、扩张、阈值等算法来查找。我能够找到工作表,但不知道如何裁剪矩形并应用变换
答题卡
这是我的代码
import numpy as np
import cv2
image = cv2.imread('im_1.jpg')
image = cv2.resize(image, (800, 600))
draw = np.zeros_like(image)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
thresh = cv2.erode(thresh, kernel, iterations=4)
thresh = cv2.dilate(thresh, kernel, iterations=4)
im, cnts, hier = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
max_area = -1
max_c = 0
for i in range(len(cnts)):
contour = cnts[i]
area = cv2.contourArea(contour)
if (area > max_area):
max_area = area
max_c = i
contour = cnts[max_c]
rect = cv2.minAreaRect(contour)
box = cv2.boxPoints(rect)
box = np.int0(box)
cv2.drawContours(image, [box],-1, (0, 255, 0), 2)
cv2.imshow('Sheet', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
代码结果: 结果
【问题讨论】:
-
很遗憾,图片无法直接看到
-
与传统系统相比,这样做会更加困难且容易出错。
标签: python-3.x image opencv image-processing rectangles