我以前使用OpenCV-2.4.10进行相机校准。现在我已经安装了OpenCV-3.0.0并运行相同的代码。 This是代码的链接。
使用以前的版本它运行正常,但在OpenCV-3.0.0
中它出错了。
TypeError:必需参数' cameraMatrix' (pos 4)未找到
谁能告诉我如何解决这个问题?
如果我添加cameraMatrix(Pos4)和distcoeff(Pos5),则会出错:
TypeError:函数只需要2个参数(给定3个)
答案 0 :(得分:1)
这也困扰了我,但现在你需要为每个人传递None
。
retval, cameraMatrix, distCoeffs, rvecs, tvecs = cv2.calibrateCamera(objectPoints,imagePoints, imageSize, None, None)
答案 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。