OpenCV - 3.0相机校准给出错误

时间:2016-02-18 06:06:28

标签: python opencv camera-calibration

我以前使用OpenCV-2.4.10进行相机校准。现在我已经安装了OpenCV-3.0.0并运行相同的代码。 This是代码的链接。

使用以前的版本它运行正常,但在OpenCV-3.0.0中它出错了。

  

TypeError:必需参数' cameraMatrix' (pos 4)未找到

谁能告诉我如何解决这个问题?

如果我添加cameraMatrix(Pos4)和distcoeff(Pos5),则会出错:

  

TypeError:函数只需要2个参数(给定3个)

4 个答案:

答案 0 :(得分:1)

这也困扰了我,但现在你需要为每个人传递None

retval, cameraMatrix, distCoeffs, rvecs, tvecs = cv2.calibrateCamera(objectPoints,imagePoints, imageSize, None, None)

http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_calib3d/py_calibration/py_calibration.html#calibration

答案 1 :(得分:1)

我遇到完全相同的错误

TypeError: function takes exactly 2 arguments (3 given) 

但是事实证明,在转换为灰度之前,我将图像的形状作为ImageSize传递,因此,由3个值而不是2个值组成的元组有时会使OpenCV产生令人困惑的错误。

答案 2 :(得分:0)

试试这个:

ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(
    objpoints, imgpoints, frame.shape[::-1][1:3], None, None
)

frame.shape是您用于校准的img大小

答案 3 :(得分:0)

我有同样的错误,您必须传递相机的宽度和高度,在我的情况下,我使用以下代码行:

ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(_3d_points, 
                                                   _2d_points, 
                                                   (im.shape[1], im.shape[0]), 
                                                   None,
                                                   None)

这里im.shape[1]是宽度,im.shape[0]是高度,基本上返回图像的大小,还要确保将图像转换为灰度。

在我的情况下,将图像转换为灰度并添加以上代码行有助于我获得o / p。