Получить координаты края после обнаружения края (Canny) - PullRequest
3 голосов
/ 29 апреля 2011

Я работал с OpenCV довольно короткое время, выполнил Canny Edge Detection для изображения, а также выполнил дилатацию после этого, чтобы дополнительно отделить объект (в моем случае квадрат) от фона.

Моя задача сейчас состоит в том, чтобы идентифицировать захватываемые области в 2D, используя алгоритм, который требует от меня обработки координат точек на этих ребрах. Можно ли как-нибудь использовать OpenCV, чтобы получить координаты углов, чтобы я мог найти уравнение линий, образующих край квадрата? Я знаю размер квадрата. Моя проблема связана с двухмерной геометрией координат и, следовательно, с необходимостью координат.

Я могу предоставить изображение после обнаружения края и расширения при необходимости. Помощь будет высоко ценится.

Ответы [ 2 ]

3 голосов
/ 30 апреля 2011

Просто предложение второго метода - не гарантированно сработает.

  • Шаг 1: извлечение подключенных компонентов и их контуров.Это может быть применено после шага Canny Edge Detection.
  • Шаг 2: Если контуры достаточно хорошо приближены к квадрату, вы можете напрямую использовать их ограничивающий прямоугольник.
    • BoundingRect - если прямоугольники всегда находятся в вертикальном положении (не повернуты)
    • MinAreaRect - если прямоугольники поворачиваются.

Причина отказа от ответственности заключается в том, что он работает только на очень чистых результатах, без каких-либо сломанных краев или пропусков на краях Кенни и т. Д. Если вам нужен более надежный способ поиска прямоугольников, Нужно преобразовать .

1 голос
/ 30 апреля 2011

Вы можете использовать угловые детекторы, предоставляемые в OpenCV, такие как Harris или Corner Eigenvalues. Вот пример этого вместе с полноценным кодом.

В случае, если другие функции также вызывают проблемы, вам может понадобиться анализ связанных компонентов.

...