введите описание изображения здесьЯ пытаюсь найти расстояние между двумя неправильными краями в двоичном изображении через разные промежутки времени. Я хочу найти расстояние/длину красной линии (расстояние между черным краем внизу и краем черного пика вверху). Не уверен, какой метод использовать для этого. Я также сделал определение края. Но не уверен, как найти расстояние между краями (зелеными линиями). Было бы здорово, если бы я мог также отслеживать зеленые линии и рисовать линию (не прямую) поверх нее. Я пытаюсь сделать все это с помощью пакетов OpenCV и Scipy. Пожалуйста, дайте мне знать, если я должен подойти к этой проблеме каким-либо другим способом. И в моем случае я не могу определить координаты вручную, потому что у меня есть огромный набор данных для ежедневной работы.

topLeft = count(mask[0])
bottomLeft = count(mask[h])
# to shadow and hide the old left line
mask = line(mask, (topLeft, 0), (bottomLeft, h), (0, 0, 0), 80)

topRight = count(mask[0])
bottomRight = count(mask[h])
# to shadow and hide the old right line
mask = line(mask, (topRight, 0), (bottomRight, h), (0, 0, 0), 80)

mask = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)

# to draw new clean left line
mask = line(mask, (topLeft, 0), (bottomLeft, h), (128, 0, 255), 25)
# to draw new clean right line
mask = line(mask, (topRight, 0), (bottomRight, h), (128, 0, 255), 25)

a = center(topLeft, 0, bottomLeft, h)
b = center(topRight, 0, bottomRight, h)
mask = line(mask, a, b, (128, 0, 255), 25)

cv2.imwrite("out2.jpg", mask)

Blockquote

отвечать

То, что вы называете расстоянием, кажется вертикальным расстоянием.

Для расстояния по вертикали достаточно проследить вертикаль сверху и обнаружить два перехода от черного к белому.

Если вы ищете наклонное расстояние (или ваш рисунок просто неточен), вы должны рисовать линии Брезенхэма вместо чистых вертикалей.