'使用solvePnPRansac()解压缩'太多值' - 姿势估计

Guy*_*Guy 5 python opencv

我正在尝试运行本教程中的代码 - Pose Estimation,

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

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

ValueError:要解压缩的值太多

根据文件:

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

有人处理过这个问题吗?

(Python 2.7,OpenCV 3b)

run*_*run 8

例外情况表明返回的值超过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)
Run Code Online (Sandbox Code Playgroud)

这似乎表明没有任何改变.但是,在python中:

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

所以尝试一下可能会有所帮助:

_, rvecs, tvecs, inliers  = cv2.solvePnPRansac(objp, corners2, mtx, dist)
Run Code Online (Sandbox Code Playgroud)

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

rvecs, tvecs, inliers  = cv2.solvePnPRansac(objp, corners2, mtx, dist)[:-3]
Run Code Online (Sandbox Code Playgroud)


小智 5

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

为我工作