Я хотел бы вырезать непрямую angular, неполигональную часть изображения, в которой есть слова, которые я затем обработаю с помощью OCR.
Мне удалось найти контур объект, который выглядит следующим образом:
Мне нужно, чтобы результирующая обрезка была максимально точной, поэтому я не могу использовать методы, которые приближают многоугольник или прямоугольник.
Вот входное изображение и код:
import cv2
import numpy as np
import imutils
shape = cv2.imread("testImg.jpg")
resized = imutils.resize(shape, width=600)
gray = cv2.cvtColor(resized,cv2.COLOR_BGR2GRAY)
th3 = cv2.threshold(gray, 100, 255, cv2.THRESH_BINARY)[1]
cv2.imshow("th3",th3)
#find contours of thresh
contours, hierarchy = cv2.findContours(th3, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
print("Number of Contours found = " + str(len(contours)))
#a black screen
out = np.zeros_like(resized)
#copy of thresh
copy=th3.copy()
#find largest contour area and draw it
cntArea = []
for c in contours:
cntArea.append(cv2.contourArea(c))
maxArea = max(cntArea)
maxIndex=cntArea.index(max(cntArea))
maxCnts=contours[maxIndex]
cv2.drawContours(out, maxCnts, -1, (0,255,0), 2)
cv2.imshow("out",out)
cv2.waitKey(0)
cv2.destroyAllWindows
Я пытался очистить контуры фона, но это не помогло работать из-за моего метода обнаружения OCR (изображение ниже не будет проходить через мой код OCR)