Нахождение четырехугольного контура с последующим применением перспективного преобразования - PullRequest
0 голосов
/ 02 мая 2020

Благодаря помощи в этом посте я знаю, как обрезать картинку.

Исходное изображение

enter image description here

Окончательная сборка изображения по следующему сценарию.

enter image description here

Python Используемый сценарий

import cv2

DEBUG = False

image = cv2.imread("test.jpeg")
gray_image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

blurred_gray_image = cv2.blur(gray_image,(21,21))

if DEBUG:
    cv2.imwrite("blurred.jpeg", blurred_gray_image)

# See matplotlib graph !
_,thresholded_blurry_image = cv2.threshold(blurred_gray_image,50,255,cv2.THRESH_BINARY)

if DEBUG:
    cv2.imwrite("thresholded.jpeg", thresholded_blurry_image)

output, contours, hierarchy = cv2.findContours(thresholded_blurry_image,
cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

output = image.copy()
if len(contours) != 0:
    c = max(contours, key = cv2.contourArea)
    # coordinates of the contour
    x,y,w,h = cv2.boundingRect(c)
    cv2.rectangle(output,(x,y),(x+w,y+h),(0,255,0),2)


output = cv2.cvtColor(output,cv2.COLOR_BGR2RGB)

output = image[y:y+h, x:x+w]

cv2.imwrite("basic.jpeg", output)

Требуемый четырехугольник

Я бы хотел go сделать шаг вперед: мне нужно найти лучший контур четырехугольника, как в картинка ниже. Затем я хотел бы применить перспективное преобразование, чтобы получить «наиболее реальную плоскую» версию письменного документа.

enter image description here

...