Функция cvLine ()
может нарисовать прямую линию по двум точкам P1 (x1, y1) и P2 (x2, y2). Я застрял в получении точек на этой линии вместо того, чтобы сразу рисовать ее.
Предположим, я рисую линию (зеленым цветом) AB и другую линию AC. Если я прослежу все пиксели на линии AB, то будет точка, где я столкнусь с черными пикселями (граница круга, охватывающего A), прежде чем я достигну B.
Опять же, при перемещении по пикселям на линии AC черные пиксели будут встречается дважды.
Обычно я пытаюсь получить точки на (зеленых) линиях, но cvLine ()
, похоже, не возвращает никакой структуры последовательности точек. Есть ли способ получить эти точки с помощью OpenCV?
Довольно глупым подходом было бы нарисовать линию с помощью cvLine ()
на отдельном изображении, затем найти на нем контуры, а затем пересечь этот контур CvSeq *
(нарисованная линия) для точек. Как исходное изображение, так и исходное изображение одинакового размера, мы получим позиции точек. Как я уже сказал, тупой. Любой просвещенный подход был бы замечательным!