Как получить очки с линии в OpenCV? - PullRequest
10 голосов
/ 14 июля 2011

Функция cvLine() может рисовать прямую линию с учетом двух точек P1 (x1, y1) и P2 (x2, y2). То, что я застрял в это получить точки на этой линии, а не рисовать ее сразу.

Предположим, я рисую линию (зеленым цветом) AB и другую линию AC. Если я прослежу все пиксели в строке AB, будет точка, в которой я столкнусь с черными пикселями (граница круга, который окружает A), прежде чем я достигну B.

Снова при движении вдоль пикселей на линии AC черные пиксели будут встречаться дважды.

line points

В основном я пытаюсь получить точки на (зеленых) линиях, но cvLine(), похоже, не возвращает какую-либо структуру последовательности точек. Есть ли способ получить эти очки с помощью OpenCV?

Довольно тупой подход - нарисовать линию, используя cvLine() на отдельном изображении, затем найти на ней контуры, а затем пересечь CvSeq* (нарисованную линию) контура для точек. Как скретч-изображение, так и исходное изображение имеют одинаковый размер, мы получим положение точек. Как я уже сказал, вроде тупой. Любой просвещенный подход был бы великолепен!

1 Ответ

12 голосов
/ 14 июля 2011

Я думаю CvLinIterator делает то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...