Использование OpenCV (python) Я пытаюсь удалить часть изображения, которая находится над границей (белая область в этом образце изображения, где ORIGINAL записывается) на изображении, показанном ниже
Используя горизонтальные и вертикальные ядра, я могу нарисовать каркас, но это не работает много раз, потому что много раз из-за качества сканирования несколько горизонтальных или вертикальных линий появляются вне каркаса, что вызывает неправильное определение контура. На этом изображении вы также можете видеть в правом верхнем углу шум, который я определяю как самую верхнюю горизонтальную линию.
Что я хочу, так это то, что когда я получу фактическое поле, я могу просто использовать координаты x, y для OCR. сканирование необходимых полей (например, ссылочный номер, выдан в et c).
Ниже приведено то, что я смог извлечь, используя приведенный ниже код. Однако не может обрезать внешний дополнительный участок изображения из-за шумных горизонтальных или вертикальных линий вне этого каркаса. Также попытался заполнить внешний раздел черным, а затем определить контуры.
Предложения, пожалуйста ...
kernel_length = np.array(image).shape[1]//40
# A verticle kernel of (1 X kernel_length), which will detect all the verticle lines from the image.
verticle_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1, kernel_length))
# A horizontal kernel of (kernel_length X 1), which will help to detect all the horizontal line from the image.
hori_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (kernel_length, 1))
# A kernel of (3 X 3) ones.
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
# Morphological operation to detect verticle lines from an image
img_temp1 = cv2.erode(gray, verticle_kernel, iterations=3)
verticle_lines_img = cv2.dilate(img_temp1, verticle_kernel, iterations=3)