У меня есть несколько изображений страниц на столе. Я хотел бы вырезать страницы из изображения. Как правило, страница будет самым большим прямоугольником на изображении, однако в некоторых случаях все четыре стороны прямоугольника могут быть не видны.
Я делаю следующее, но не получаю желаемых результатов:
import cv2
import numpy as np
im = cv2.imread('images/img5.jpg')
gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(gray,127,255,0)
_,contours,_ = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
areas = [cv2.contourArea(c) for c in contours]
max_index = np.argmax(areas)
cnt=contours[max_index]
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(im,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow("Show",im)
cv2.imwrite("images/img5_rect.jpg", im)
cv2.waitKey(0)
Ниже приведены несколько примеров:
1-й пример. Я могу найти прямоугольник на этом изображении, однако, хотелось бы, чтобы и оставшаяся часть дерева была обрезана.
Второй пример: не найти правильные размеры прямоугольника на этом изображении.
3-й пример. Невозможно найти правильные размеры на этом изображении.