2011-05-03 51 views
5

Estoy tratando de entender y usar OpenCV. Quería saber si es posible encontrar y medir un ángulo entre dos cuadros.OpenCV - ¿Cómo detectar y medir un ángulo entre dos cuadros?

Explico: La cámara está fija y los marcos podrían girar alrededor del centro y no se moverán. Por ahora pude rotar manualmente y me gustaría poder comparar cuadros y devolver el ángulo. Por ejemplo:

double getRotation(Image img1, Image img2) { 
    //Compare the frames 

    //Return the value 
} 

y luego giro siguiendo ese ángulo.

Respuesta

3

Si puede detectar objetos estáticos, e. gramo. fondo, en los fotogramas, entonces puede encontrar puntos llamados good_features_to_track (cvGoodFeaturesToTrack) en el fondo y rastrear estos puntos usando optical_flow (cvCalcOpticalFlowPyrLK).

Si la rotación está solo en 'xy', puede detectar la rotación usando cvGetAffineTransform.

Dado que solo se permite la rotación (sin traslación ni escalado) no es difícil determinar un ángulo de rotación usando la matriz de transformación, obtenida por cvGetAffineTransform. Esa matriz se parece (ver wikipedia):

enter image description here

Donde \ theta es el ángulo de rotación

+0

¡Gracias por la respuesta rápida! Intentaré esto y te mantendré informado. Solo para saber, si no hay antecedentes, quiero decir, si estoy filmando barcolor (mire), ¿podría funcionar también? – Julio

0

bien esto puede ser muy complicado, sólo una solución más simple podría ser encontrar las líneas Hough de los marcos . Por supuesto, necesitaría determinar dónde se encuentran las mejores y estables líneas que puede rastrear entre los dos cuadros, una vez que esté disponible, puede encontrar el ángulo entre los dos cuadros. Lo que Andrey ha sugerido para encontrar los ángulos debería ser utilizable también.

Cuestiones relacionadas