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.

cv2.stereoCalibrate lanza una aserción fallida.

Estoy utilizando opencv-contrib-python (4.5.4.60) para calibrar la estereovisión emulada mediante 2 imágenes tomadas con una sola cámara (por ahora solo tengo una de ellas), como si hubiera dos cámaras para estimación de profundidad estéreo en el futuro. Encuentro los parámetros intrínsecos de la cámara a partir de varias fotos e intento pasar los puntos de los marcadores ChAruCo de las dos fotos al stereoCalibrate, pero obtengo un error de afirmación:

ret, M1, d1, M2, d2, R, T, E, F = cv2.stereoCalibrate(objpoints_L, imgpoints_L, imgpoints_R, camera_matrix, distortion_coefficients0, camera_matrix, distortion_coefficients0,img_r1.shape[:2], F = F)
cv2.error: OpenCV(4.5.4) D:\a\opencv-python\opencv-python\opencv\modules\calib3d\src\calibration.cpp:1088: error: (-215:Afirmación fallida) (count >= 4) || (count == 3 && useExtrinsicGuess) en la función 'cvFindExtrinsicCameraParams2'

He verificado el tipo de entrada de los puntos del objeto y los puntos de la imagen con cv2.utils.dumpInputArray():

InputArray: empty()=false kind=0x00010000 flags=0x01010000 total(-1)=40 dims(-1)=2 size(-1)=1x40 type(-1)=CV_32FC3
InputArray: empty()=false kind=0x00010000 flags=0x01010000 total(-1)=40 dims(-1)=2 size(-1)=1x40 type(-1)=CV_32FC2
InputArray: empty()=false kind=0x00010000 flags=0x01010000 total(-1)=40 dims(-1)=2 size(-1)=1x40 type(-1)=CV_32FC2

Los he ordenado para pasar solo los coincidentes en ambas fotos, pero aún obtengo un error de afirmación y no puedo entender qué estoy haciendo mal.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que hay un fallo de aserción en la función cvFindExtrinsicCameraParams2 debido a entradas incorrectas. Más específicamente, el número de puntos de objeto de entrada debe ser mayor o igual a 4, o igual a 3 si se utiliza una estimación extrínseca.

    Has verificado el tipo de entrada de los puntos de objeto y los puntos de imagen utilizando cv2.utils.dumpInputArray() y has comprobado que son correctos. Sin embargo, sigues obteniendo el error de fallo de aserción incluso después de ordenar los puntos de objeto para pasar solo los puntos coincidentes en ambas fotos.

    Aquí tienes algunas cosas que podrías intentar para resolver el problema:

    1. Asegúrate de que el número de puntos de objeto y puntos de imagen que estás pasando a la función stereoCalibrate es correcto. Ambos deben tener la misma longitud.
    2. Comprueba si hay puntos duplicados en tu entrada. Eliminar los duplicados puede ayudar a resolver el problema.

    3. Intenta pasar un conjunto más pequeño de puntos a la función stereoCalibrate y comprueba si persiste el error. Si no lo hace, es posible que el problema sea debido al tamaño de la entrada.

    4. Comprueba si las imágenes que estás utilizando contienen suficientes características para extraer puntos confiables. Puedes intentar aumentar el número de marcadores ChAruCo o utilizar un conjunto de imágenes diferente por completo.

    5. Si ninguna de las anteriores funciona, verifica tus estimaciones extrínsecas y asegúrate de que sean correctas.

    ¡Espero que esto te ayude!

Comments are closed.