es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Traduzca un punto de coordenadas de una imagen rotada a coordenadas del contenedor.

Estoy creando una aplicación que trata de encontrar tres puntos en una imagen usando EmguCV. Estos tres puntos se usan para calcular la posición de un código numérico que quiero mostrar al usuario. El objetivo es ayudar al usuario a centrar y ampliar ese código para permitirle leerlo correctamente y sin esfuerzo. El código puede estar en diferentes ángulos y es muy importante rotar la imagen para mostrar el código en la orientación correcta.

Muestro la imagen dentro de un ScrollView. Lo que hago es desplazarme proporcionalmente en las coordenadas X e Y para centrar la imagen sobre el código en relación al punto central del código. Funciona bien cuando hago esto sin rotar la imagen, pero cuando roto la imagen no puedo calcular la posición del código. Para ilustrar el problema, pondré dos imágenes.

En la imagen de arriba se puede ver un punto azul que representa la localización del centro del código. El vector verde representa el vector desde el origen de la imagen hasta el centro del código. En ese caso, el origen de la imagen y el origen del contenedor son los mismos, así que puedo ampliar y centrar sobre el código sin problemas.

Para poner el código orientado y legible, tendré que rotar aproximadamente -120º toda la imagen. En la imagen de arriba (2), el cuadrado negro representa la imagen rotada -120º con su centro del código (punto naranja) y el vector que indica su origen (verde). El cuadrado rojo grande representa el rectángulo contenedor (una cuadrícula). El problema es que el punto central que calculé antes con EmguCv tiene su origen en el punto (0,0) de la imagen, cuando roto la imagen este origen (0,0) de la imagen también se rota. Así que quiero calcular el punto central del código (punto naranja) en relación al origen del contenedor (vector amarillo) para desplazarme y centrar la imagen sobre el código.

Para calcular la traslación del punto, uso una matriz y funciona bien para la transformación de escala, pero no para la transformación de rotación debido a la rotación del punto de origen.

Tienes que considerar que cortar y extraer la porción del código no es una opción. No siempre la biblioteca OpenCV puede extraer tres puntos de la imagen y a veces no puedo calcular la posición correctamente, así que necesito permitir al usuario desplazarse sobre la imagen para encontrar el código.

La imagen tiene 2448×2048 píxeles, la escala es X,Y 3.0 y la rotación es de aproximadamente -120º.

¿Algún consejo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Estoy intentando crear una aplicación que usa EmguCV para encontrar tres puntos en una imagen y calcular la posición de un código numérico que quiero mostrar al usuario. El objetivo es ayudar al usuario a hacer zoom y centrar el código para hacerlo más fácil de leer.

    Estoy mostrando la imagen en un ScrollView y puedo mover y centrar la imagen sobre el código en relación al punto central del código cuando la imagen no está rotada. Sin embargo, cuando roto la imagen, no puedo calcular la posición del código correctamente.

    Para ilustrar el problema, he incluido dos imágenes a continuación. La primera imagen muestra un punto azul representando la localización del centro del código, y el vector verde representa el vector desde el origen de la imagen hasta el centro del código. La segunda imagen muestra un cuadrado negro que representa la imagen rotada -120 ° con el centro del punto de código (naranja) y el vector que indica su origen (verde). El gran cuadrado rojo representa el rectángulo contenedor (una cuadrícula).

    El problema es que el punto central que calculé antes con EmguCv tiene su origen en el punto (0,0) de la imagen, cuando roto la imagen, este origen (0,0) de la imagen también se rota. Así que quiero calcular el punto central del código (punto naranja) en relación al origen del contenedor (vector amarillo) para mover y centrar la imagen sobre el código.

    Estoy usando una matriz para calcular la traslación del punto, pero no funciona para la transformación de rotación debido a la rotación del punto de origen. Cortar y extraer la porción de código no es una opción.

    La imagen tiene 2448×2048 píxeles, la escala es X,Y 3.0 y la rotación es cerca de -120 °.

    ¿Tienes alguna sugerencia?

Comments are closed.