Sto cercando di imparare come eseguire la calibrazione 3D e stereo della fotocamera usando openCV e python. Usando 3 viste di una scacchiera 8x6 (7x5 angoli interni), sono riuscito a far funzionare OK cv.calibrateCamera()
ma sono completamente bloccato quando uso cv2. Uno dei passaggi è trovare gli angoli della scacchiera. Mentre cv.findChessboardCorners()
restituisce gli angoli come un elenco di punti, cv2 utilizza gli array numpy e restituisce i punti come una matrice numerica (35,1,2). I parametri per cv2.calibrateCamera() sono object_points
, image_points
e image_size
. Fornisco i punti oggetto in una matrice numpy (3,35,3)
e i punti immagine in una matrice numpy (3,35,2)
. La dimensione dell'immagine è (1632, 1224)
. Qualcuno può dirmi qual è il problema? L'errore che ottengo non è molto utile:cv2.cameraCalibration using python
Traceback (most recent call last):
File "H:/pyCV/locv_book/ch11/calCamera2a.py", line 46, in <module>
cv2.calibrateCamera(opts,ipts,size)
error: ..\..\..\src\opencv\modules\calib3d\src\calibration.cpp:3173: error: (-215) ni >= 0
Grazie! Questo errore mi ha infastidito fino alla fine! – shinjin
Trovato questa domanda nel 2015, usando OpenCV 2.4.10. Ottengo un simile "cv2.error: ... calibration.cpp: 3169: error: (-215) ni> = 0 nella funzione cv :: collectCalibrationData". La soluzione era di rimodellare entrambi gli array a (1, N, 3) e (1, N, 2) rispettivamente per i punti oggetto e immagine. – sastanin