2011-07-14 21 views
9

La función cvLine() puede trazar una línea recta dados dos puntos P1 (x1, y1) y P2 (x2, y2). En lo que estoy estancado es en obtener los puntos en esta línea en lugar de dibujarlos de inmediato.¿Cómo obtener puntos de una línea en OpenCV?

Supongamos que trazo una línea (en verde) AB y otra línea AC. Si sigo todos los píxeles en la línea AB, habrá un punto en el que encuentro píxeles negros (el borde del círculo que encierra A) antes de llegar a B.

De nuevo cuando se viaja a lo largo de los píxeles en línea AC píxeles negros ser encontrado dos veces

line points

Básicamente estoy tratando de conseguir los puntos sobre las líneas (verde), pero cvLine() no parece devolver cualquier estructura de la secuencia de puntos. ¿Hay alguna forma de obtener estos puntos usando OpenCV?

Un enfoque bastante tonto sería dibujar la línea usando cvLine() en una imagen separada, luego encontrar los contornos en ella, luego recorrer esa contornos CvSeq* (la línea dibujada) para los puntos. Tanto la imagen raspada como la imagen original son del mismo tamaño y obtendríamos las posiciones de los puntos. Como dije, algo tonto. ¡Cualquier acercamiento iluminado sería genial!

Respuesta

12

Creo que CvLinIterator hace lo que quiere.

+1

gracias. de alguna manera lo perdí en los documentos! – AruniRC

+1

El enlace parece estar roto. Aquí hay uno que funciona por ahora http://docs.opencv.org/modules/core/doc/drawing_functions.html#lineiterator –

+0

Gracias @CalebDoucet Actualicé mi respuesta. –

Cuestiones relacionadas