'Too many values to unpack' with solvePnPRansac() - 姿势估计



我正在尝试运行本教程中的代码 - 姿势估计,

调用函数后,我收到以下错误solvePnPRansac

rvecs, tvecs, inliers = cv2.solvePnPRansac(objp, corners2, mtx, dist)

值错误:要解压缩的值太多

根据文档:

Python: cv2.solvePnPRansac(objectPoints, imagePoints, cameraMatrix, distCoeffs[, rvec[, tvec[, useExtrinsicGuess[, iterationsCount[, reprojectionError[, minInliersCount[, inliers[, flags]]]]]]( → rvec, tvec, inliers

有人处理过这个问题吗?

(Python 2.7 , OpenCV 3b(

异常表示返回的值超过 3 个。OpenCV3 更改了很多方法签名,不幸的是没有真正记录它。我检查了solvepnp.cpp,签名上写着:

bool cv::solvePnPRansac(InputArray _opoints, InputArray _ipoints,
                    InputArray _cameraMatrix, InputArray _distCoeffs,
                    OutputArray _rvec, OutputArray _tvec, bool useExtrinsicGuess,
                    int iterationsCount, float reprojectionError, double confidence,
                    OutputArray _inliers, int flags)

这似乎表明什么都没有改变。但是,在python中:

solvePnPRansac(...)
solvePnPRansac(objectPoints, imagePoints, cameraMatrix, distCoeffs[, rvec[, tvec[, useExtrinsicGuess[, iterationsCount[, reprojectionError[, confidence[, inliers[, flags]]]]]]]]) 
-> retval, rvec, tvec, inliers

因此,尝试一下可能会有所帮助:

_, rvecs, tvecs, inliers  = cv2.solvePnPRansac(objp, corners2, mtx, dist)

或者,如果您只想解压缩最后 3 个元素:

rvecs, tvecs, inliers  = cv2.solvePnPRansac(objp, corners2, mtx, dist)[:-3]
_,

rvecs, tvecs, inliers = cv2.solvePnPRansac(objp, corners2, mtx, dist(

为我工作

所以我遇到了同样的问题,当我打印出来时,第一个值是一个真/假值,就像原版 solvePnP 一样

我认为solvePnPRansac现在结合了两个输出,使结果成为四个项目:retval, rvec, tvec, inliers

对于最初的提问者来说显然有点晚了,但这仍然花了我很多时间才弄清楚。我正在使用Python 2.7.12和Ubuntu 16.04。我希望 Python 版本更重要,我不知道 Python 3.6+ 是否反映了相同的行为。

最新更新