Проверьте, есть ли линия между двумя конечными точками или нет, opencv

Я использую OpenCV для обнаружения фигур, я должен определить форму, как это

это будет нарисованное от руки изображение, и я использую kinect для обнаружения изображения путем проверки кадров. Теперь я получаю 6 баллов за снимки такого типа, убирая шум, обнаружение краев, нахождение контуров и, кроме того, теперь я не могу обнаружить, что фигура направлена ​​вправо, влево, вниз или вверх. По мере изменения местоположения точек для каждой картинки.

Поэтому я хочу знать, учитывая две точки, как я могу проверить, есть ли отрезок между точками или нет. Получив там две точки, я могу вычислить из оставшейся точки положение, на которое указывает фигура.

Если у кого есть лучшее решение, пожалуйста, поделитесь.

1 ответ

Предположим, у вас есть две конечные точки, и ваш линейный сегмент имеет значение пикселя больше нуля (на изображении выше вам может потребоваться использовать двоичный порог в инвертированном виде).

  1. Создайте изображение маски, нарисовав линию толщиной =1 пиксель.

  2. Скопируйте исходное изображение в новый Mat, используя вышеуказанную маску.

  3. Теперь посчитайте ненулевой пиксель в результирующем мате,

    • если он равен нулю, то между точками нет линии,
    • и если число, отличное от нуля, дает значение, вы можете перепроверить его, сравнивая с длиной линии, которую вы нарисовали в маске.
Другие вопросы по тегам