Обрезать прямоугольную angular бумагу с изображения - PullRequest
1 голос
/ 17 марта 2020

из обсуждения: Обрезать точно документную бумагу с изображения Я пытаюсь получить белую бумагу с изображения и использую следующий код, который не обрезает точно прямоугольник angular.

def crop_image(image):
image = cv2.imread(image)

# convert to grayscale image
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# threshold
thresh = cv2.threshold(gray, 190, 255, cv2.THRESH_BINARY)[1]

# apply morphology
kernel = np.ones((7, 7), np.uint8)
morph = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
kernel = np.ones((9, 9), np.uint8)
morph = cv2.morphologyEx(morph, cv2.MORPH_ERODE, kernel)


# Get Largest contour
contours = cv2.findContours(morph, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
contours = contours[0] if len(contours) == 2 else contours[1]
area_thresh = 0
for cnt in contours:
    area = cv2.contourArea(cnt)
    if area > area_thresh:
        area_thresh = area
        big_contour = cnt

# get bounding box
x, y, w, h = cv2.boundingRect(big_contour)

# draw filled contour on black background
mask = np.zeros_like(gray)
mask = cv2.merge([mask, mask, mask])
cv2.drawContours(mask, [big_contour], -1, (255, 255, 255), cv2.FILLED)

# apply mask to input
result = image.copy()
result = cv2.bitwise_and(result, mask)

# crop result
img_result = result[y:y+h, x:x+w]
filename = generate_filename()
cv2.imwrite(filename, img_result)
logger.info('Successfully saved cropped file : %s' % filename)
return img_result, filename

Я могу получить желаемый результат, но не прямоугольное angular изображение. Здесь я прилагаю Originally captured photo и вот что я получаю после обрезки изображения Cropped image. Я хочу прямоугольное angular изображение бумаги. Пожалуйста, помогите мне с этим.

Заранее спасибо

1 Ответ

1 голос
/ 17 марта 2020

Первая проблема, которую я вижу, состоит в том, что пороговое значение недостаточно низкое, поэтому нижняя часть бумаги записывается неправильно (слишком темно, чтобы быть зафиксированной порогом)

Вторая проблема, связанная с Насколько я могу понять, это возможность вписать квадрат в изображение. Что вам нужно сделать, это обернуть перспективу.

Для этого вы можете найти больше информации в этом удивительном сообщении PyImageSearch

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...