python - 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 中的任何一个,则必须初始化部分或全部矩阵分量。有关详细信息,请参阅标志说明。
我还看到了一些应用程序,其中人们省略了这些参数并让函数估计它们。我看不到我的代码与它们相比有什么不同和/或如何触发该函数不检查这些参数并按照文档和一些在线可用的应用程序中的说明工作。
提前致谢。
解决方案
您所指的文档可能比您实际使用的版本旧得多。对于最新的 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()
.
推荐阅读
- node.js - 如何使用 Sequelize 查询 WHERE “NOT NULL” AND “NOT EQUAL TO [STRING]”?
- python - 在一段时间内,读取 RPi GPIO 的 True 循环需要开关关闭的时间,然后状态变为打开的时间
- typescript - typescript-eslint/no-unused-vars 错误地显示分配了一个值但从未使用过
- postgresql - 在 postgres 的求和查询中返回一行,即使没有数据
- python - python Pusher 缺少信息
- typescript - 在编译时从类型字段中提取常量字符串
- node.js - NPM 运行构建:缺少脚本:“构建”
- mysql - MySQL 查询 - 待批准的朋友/用户和朋友之间的关系
- python - 使用正则表达式从文本文件中提取数据
- python - 在 TensorFlow 中使用过滤或屏蔽时出现问题