2012-10-07 143 views
5

我想學習如何使用openCV和python進行3D和立體相機校準。使用8x6棋盤(7x5內角)的3個攝像頭視圖,我能夠得到cv.calibrateCamera()工作正常,但當我使用cv2時完全卡住。 其中一個步驟是找到棋盤角落。 cv.findChessboardCorners()返回角點列表,cv2使用numpy數組,並將點作爲(35,1,2)numpy數組返回。 cv2.calibrateCamera()的參數是object_points,image_pointsimage_size。我正在提供(3,35,3) numpy數組中的對象點以及(3,35,2) numpy數組中的圖像點。圖片大小爲(1632, 1224)。有人可以告訴我問題是什麼嗎?我得到的錯誤是不是非常有用:使用Python的cv2.cameraCalibration

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 

回答

5

點需要FLOAT32,以矩陣形式(N,2)和(N,3)。你可以這樣轉換爲float32:

points32 = np.array(points,dtype=np.float32) 
+0

謝謝!這個錯誤讓我無法接受! – shinjin

+1

在2015年使用OpenCV 2.4.10發現了這個問題。我在cv :: collectCalibrationData函數中得到了類似的「cv2.error:... calibration.cpp:3169:error:(-215)ni> = 0」。解決方法是將兩個陣列分別重構爲(1,N,3)和(1,N,2),分別用於對象和圖像點。 – sastanin

相關問題