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