Открыть CV: Нарисуйте недостающие контуры/линии таблицы

У меня есть некоторые таблицы с пропущенными строками, так что ячейки не закрыты (отсутствует обложка). Открытые линии я не хочу расширять по вертикали, а хочу нарисовать горизонтальную линию, чтобы закрыть их. Есть ли способ обнаружить открытые линии и получить их конечное положение, чтобы нарисовать именно там контур?

введите здесь описание изображения

Я попробовал следующий код (из https://stackoverflow.com/questions/22240746/recognize-open-and-closed-shapes-opencvv ), но не рисовал линии на изображении:

img_vh = cv2.imread('YOURPATH')

ret, thresh = cv2.threshold(img_vh, 200, 255, cv2.THRESH_BINARY_INV)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)
hierarchy = hierarchy[0]


for i, c in enumerate(contours):
    if hierarchy[i][2] < 0 and hierarchy[i][3] < 0:
        lined = cv2.drawContours(img_vh, contours, i, (0, 0, 255), 2)
    else:
        lined = cv2.drawContours(img_vh, contours, i, (0, 255, 0), 2)
cv2.imwrite("YOURPATH/lined.jpg", lined)

person hux0    schedule 09.04.2020    source источник
comment
@coffeewin спасибо! Метод, используемый nathancy, заполняет пробелы в существующих строках, хотя я хотел бы заполнить полностью отсутствующие строки.   -  person hux0    schedule 14.04.2020


Ответы (1)


Вы можете решить эту проблему с помощью Hough Transforms. Примеры использования можно найти здесь:

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_houghlines/py_houghlines.html

person triiiiista    schedule 09.04.2020