我以前使用OpenCV-2.4.10进行相机校准。现在我已经安装了OpenCV-3.0.0并运行相同的代码。这是代码的链接。
使用以前的版本,它工作正常,但OpenCV-3.0.0
它给出了错误。
类型错误:找不到必需的参数"cameraMatrix"(位置 4)
谁能告诉我如何解决这个问题?
如果我添加cameraMatrix(Pos4)和distcoeff(Pos5),它会给出一个错误:
类型错误:函数正好需要 2 个参数(给定 3 个)
我得到了完全相同的错误
TypeError: function takes exactly 2 arguments (3 given)
但事实证明,在转换为灰度之前,我将图像的形状作为 ImageSize 传递,因此 3 个值而不是 2 个值的元组,OpenCV 有时会出现令人困惑的错误。
我有同样的错误,你必须传递相机的宽度和高度,在我的情况下,我使用了这个代码行:
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。
难倒了我,但现在你需要为每个传递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
试试这个:
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(
objpoints, imgpoints, frame.shape[::-1][1:3], None, None
)
frame.shape 是您用于校准的 img 大小