Вы можете использовать морфологию для удаления большей части длинной строки, используя Python / OpenCV, следующим образом. Используйте морфологию близко, чтобы обнаружить линию. Затем инвертируйте строку и добавьте ее обратно к входному изображению, чтобы написать поверх строки белым цветом.
Ввод:
import cv2
import numpy as np
img = cv2.imread('box_line.png')
# do morphology to find long horizontal lines using a horizontal kernel longer than the width of the box
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (80,1))
line = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel, iterations = 1)
# invert line
line = (255-line)
# add inverted line to image
result = cv2.add(img, line)
# write result to disk
cv2.imwrite("line_removed.png", result)
# display it
cv2.imshow("image", img)
cv2.imshow("line", line)
cv2.imshow("result", result)
cv2.waitKey(0)
Используйте вышеперечисленное для предварительной обработки изображения, а затем используйте другой код для извлечения прямоугольника с помощью контуров.