Este es un problema de transformación de perspectiva. En este caso, están trazando una proyección 3D en un plano 2D.
Como, la primera imagen tiene esquinas de selección en forma de cuadrilátero y cuando la transforma en forma rectangular, deberá agregar más información de píxeles (interpolation) o eliminar algunos píxeles.
Así que ahora el problema real es agregar información adicional de píxeles a la imagen recortada y proyectarla para generar una segunda imagen. Se puede implementar de varias maneras:
<> puede implementarlo usted mismo aplicando una matriz de transformación de perspectiva con interpolación.
<> puedes usar OpenGL.
<> puedes usar OpenCV. .. y hay muchas más formas de implementarlo.
He resuelto este problema usando OpenCV. Las siguientes funciones en OpenCV lo ayudarán a lograr esto.
cvPerspectiveTransform
cvWarpPerspective
Primera función calculará matriz de transformación utilizando las coordenadas origen y el destino de proyección. En su caso, la matriz src tendrá valores de CGPoint para todas las esquinas.Y dest tendrá puntos de proyección rectangulares, por ejemplo, {(0,0) (200,0) (200,150) (0,150)}.
Una vez que obtenga la matriz de transformación, tendrá que pasarla a la segunda función. usted puede visitar este thread.
Puede haber algunas otras alternativas a la biblioteca OpenCV, pero tiene una buena colección de algoritmos de procesamiento de imágenes.
aplicación iOS con biblioteca opencv está disponible en eosgarden.
Hola, ¿Puede usted por favor dígame cómo se ha implantado la cosa por encima o si es posible ¿puedes compartir cualquier tutorial o enlace útil? –
Hola Dev, ¿Tienes la solución para este problema? Por favor, puede agregar el código para esta característica. Necesito exactamente así. – Mani