¿Es posible usar solvePNP de OpenCV con una imagen equirrectangular ? Tengo una imagen equirrectangular y tengo cuatro puntos en esta imagen (puntos rojos) y sus coordenadas de píxeles, y luego tengo 4 puntos del mundo correspondientes, por ejemplo [(0, 0, 0), (2, 0, 0), (2, 10, 0), (0, 10, 0)] ¿cómo puedo estimar la pose de la cámara?
Intenté usar solvePnp pero eso esperaba intrínsecos para un modelo de cámara marrón, por lo que no funcionó. ¿Se puede hacer esto para una cámara esférica?
Utilice la documentación de solvePnPRansac y OpenCV para la reconstrucción 3D de la cámara.
Al principio, debe calcular los parámetros intrínsecos de la cámara, es decir, la distancia focal, el centro óptico y los parámetros de distorsión, para luego poder calcular la pose de su cámara. Dado que su imagen parece ser una lente ancha, debe usar cv.calibrateCamera() como se describeaquí . Debe habilitar el indicador CV_CALIB_RATIONAL_MODEL en el método cv.calibrateCamera() , que calcula los parámetros de distorsión ya que su imagen tiene grandes distorsiones.
Ahora la parte difícil Para obtener imágenes sin distorsiones de alta calidad, después de haber calibrado su cámara, debe usar un patrón de ajedrez que cubra toda su imagen, para que los parámetros de distorsión se calculen con precisión, ya que residen las mayores distorsiones radiales. en el borde de la imagen. Además , para calcular con precisión los parámetros de solvePnp, debe elegir sus puntos rojos en toda su imagen.