首页 > 解决方案 > cv2.stereoCalibrate() 函数 - TypeError: stereoCalibrate() 缺少必需的参数

问题描述

可能重复,但没有得到回答:我的代码部分如下:

(ret, mat1,dist1,mat2,dist2, R, T, E, F) = cv2.stereoCalibrate(
            objpoints1,
            imgpoints1,
            imgpoints2,
            imgsize1, criteria=None, flags=None)

我收到以下错误:

TypeError:stereoCalibrate() 缺少必需的参数“distCoeffs1”(位置 5)

根据文档:Camera Calibration and 3D Reconstruction: cv2.stereoCalibrate(),“cameraMatrix1,distCoeffs1,cameraMatrix2,distCoeffs2”的参数是输入/输出,不需要将它们传递给函数调用。

请参阅下面的报价单:

如果指定了 CV_CALIB_USE_INTRINSIC_GUESS 、 CV_CALIB_FIX_ASPECT_RATIO 、 CV_CALIB_FIX_INTRINSIC 或 CV_CALIB_FIX_FOCAL_LENGTH 中的任何一个,则必须初始化部分或全部矩阵分量。有关详细信息,请参阅标志说明。

我还看到了一些应用程序,其中人们省略了这些参数并让函数估计它们。我看不到我的代码与它们相比有什么不同和/或如何触发该函数不检查这些参数并按照文档和一些在线可用的应用程序中的说明工作。

提前致谢。

标签: pythonopencv

解决方案


您所指的文档可能比您实际使用的版本旧得多。对于最新的 OpenCV 版本(4.2.0),函数签名是:

retval,cameraMatrix1,distCoeffs1,cameraMatrix2,distCoeffs2,R,T,E,F = cv.stereoCalibrate(objectPoints,imagePoints1,imagePoints2,cameraMatrix1,distCoeffs1,cameraMatrix2,distCoeffs2,imageSize[,R[,T[,E[,F[ , 标志[, 标准]]]]]]

其中第 5 个参数是distCoeffs1,错误消息中也会报告。

您需要将所有必需的参数(objectPoints、imagePoints1、imagePoints2、cameraMatrix1、distCoeffs1、cameraMatrix2、distCoeffs2、imageSize)传递给stereoCalibrate().


推荐阅读