5

我正在尝试学习如何使用 openCV 和 python 进行 3D 和立体相机校准。使用 8x6 棋盘(7x5 内角)的 3 个摄像机视图,我能够cv.calibrateCamera()正常工作,但在使用 cv2 时完全卡住了。步骤之一是找到棋盘角。将角点作为点列表返回,而cv.findChessboardCorners()cv2 使用 numpy 数组,并将点作为 (35,1,2) numpy 数组返回。cv2.calibrateCamera() 的参数是object_pointsimage_pointsimage_size。我在 numpy 数组中提供对象点,在(3,35,3)numpy 数组中提供图像点(3,35,2)。图像大小为(1632, 1224). 谁能告诉我问题是什么?我得到的错误不是很有用:

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
4

1 回答 1

5

点需要为 float32,矩阵形式为 (N,2) 和 (N,3)。您可以通过以下方式转换为 float32:

points32 = np.array(points,dtype=np.float32) 
于 2012-11-01T18:56:23.947 回答