2016-11-23 5 views
0

J'essaie d'exécuter le calibrage de la caméra en utilisant opencv en python. J'utilise:Calibrer la caméra avec seulement une distorsion radiale

cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1],None,None) 

et il semble qu'il fonctionne bien pour 5 coefficients de distorsion. Cependant, je voudrais essayer de l'exécuter sans la distorsion tangentielle et éventuellement avec seulement 2 coefficients de distorsion radiale. Est-ce possible?

+0

Avez-vous seulement besoin d'une correction d'objectif (déformation) ou avez-vous besoin de tous les éléments intrinsèques de la caméra? – Micka

+0

J'ai besoin de tous les éléments intrinsèques de la caméra + la correction de l'objectif. –

Répondre

0

J'ai trouvé la réponse.

Pour aucune distorsion tangentielle:

ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1],None, 4,None,None,cv2.CALIB_ZERO_TANGENT_DIST, 
                criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 2e-16)) 

Pour seulement 2 coefficients de distorsion radiale il semble que la documentation suggère d'utiliser 4 au lieu de 5 pour le nombre de coefficients. Cela ne semble pas fonctionner. Au lieu de cela, je corrige le paramètre k3:

ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1],None, 4,None,None,cv2.CALIB_ZERO_TANGENT_DIST+cv2.CALIB_FIX_K3, 
                criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 2e-16))