обнаружение объекта (параллельные линии), где часть закрыта

1

Я хотел бы услышать от вас некоторые идеи. Я столкнулся с некоторыми проблемами при выполнении обнаружения объектов с помощью opencv/python.

Если вы посмотрите на изображение, я уже знаю четыре угла двух зеленых ящиков. Объект, который я пытаюсь обнаружить, - это красная футеровка, форма шланга. Мой план состоит в том, чтобы получить ширину (ш) шланга из зеленой коробки (что я уже сделал) и найти параллельные линии, которые имеют расстояние w друг от друга.

Здесь я столкнулся с двумя проблемами и искал потенциальные решения.

  1. Как я могу обнаружить все параллельные линии? Я думаю, что хорошо начать с четырех углов зеленой коробки, потому что точки находятся на пути красных линий. Хотелось бы, чтобы я мог проектировать строки из углов, заставляя их следовать за белыми пикселями, пока они не встретили тупик или острый угол. Есть ли способ перемещаться по белым контурам?

  2. Следующая проблема (при условии, что Q1 была решена) заключается в том, что красные линии закрыты посередине желтой частью. Как я могу заставить две красные части рассматриваться как один и тот же объект? Я ищу самый конец красных линий внизу.

образ

Теги:
opencv
contour
edge

1 ответ

1
Лучший ответ

Как я могу обнаружить все параллельные линии?

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

lines = cv2.HoughLines(edges,1,np.pi/180,200)

Это вернет все обнаруженные линии, параметризованные двумя переменными: rho (расстояние от источника) и theta (угол от начала координат)

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

  • 0
    Спасибо!! Это только для обнаружения прямых линий?
  • 0
    @SSS рад, что смог помочь. Да, это для обнаружения прямых линий (или в основном прямых). Тем не менее, я думаю, что вы могли бы обнаружить не прямые линии путем обнаружения и агрегирования последовательных прямых линий. Существует также вариант, называемый вероятностным HoughTransform (он также реализован в opencv). Это имеет тенденцию работать лучше для отрезков. Кроме того (не связано), есть вариант Hough Transform для определения кругов, если вам когда-либо понадобится.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню