2011-11-08 20 views
5

Estoy empezando a aprender la programación de OpenCV. ¿Puedo preguntar cómo puedo identificar líneas y curvas en OpenCV? Mi problema es que tengo que identificar si la imagen contiene una curva convexa o cóncava (curva horizontal o vertical), una línea vertical, diagonal o horizontal.OpenCV Identificación de líneas y curvas

En mi código, utilicé CvSetImageROI para tomar una parte particular de una imagen, y luego estoy tratando de identificar cada una de acuerdo con dichas líneas/curvas.

¿Hay funciones en OpenCV que estén disponibles? Muchas gracias por la ayuda. Por cierto, estoy usando Linux y C++.

+0

¿Ha encontrado algún método para identificar curvas en la imagen. –

Respuesta

5

Hough transform http://en.wikipedia.org/wiki/Hough_transform, http://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm es la forma estándar de hacerlo. En su forma simple (como se implementa en OpenCV) puede detectar líneas de posición de arbitraje y segmentos de ángulo y línea.

vistazo aquí para ver un ejemplo http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html?highlight=hough#houghlinesp

Para las curvas, el proceso de detección es un poco más complicado, y que necesita de Hough de transformación general todavía no es disponible en OCV, pero se puede escribir como un ejercicio o busca una buena implementación. http://en.wikipedia.org/wiki/Generalised_Hough_transform lo describe (en resumen)

+3

También puede consultar Canny() y FindContours() – Adrian

+0

¿Cómo podré verificar los ángulos? ¿Puedo obtener eso de los parámetros? ¡Muchas gracias! – cmsl

+0

La transformada de Hough devuelve ángulos e intersección (si usa la clásica) y puntos finales de segmento (para la probabilística). Puede extraer ángulos con cálculos geométricos simples desde puntos finales o usar la transformación clásica. Compruebe la documentación de OpenCV y el ejemplo en el enlace de arriba – Sam