'Too many values to unpack' with solvePnPRansac() - Pose Estimation 解决方法

问题描述:

在做相机位姿估计时用到这个函数:cv2.solvePnPRansac

python中该函数原型为:

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

因此在调用该函数时,起先是这么写的:

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

然而,这么写的话,会报如题所示的错误:alueError: too many values to unpack


解决方法:

其实在OpenCV3的python接口中,发生了一些变化,函数原型应该为:

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

 它还会返回一个retval值,这个值一般用不到,所以你在使用这个函数时,可以像如下这么写:

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

 或者你仅仅想用最后的三个返回元素,可以如下这么写:

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

以上两个写法都是正确的,这样就不会再报错误了~问题解决!

 

参考:https://stackoverflow.com/questions/28440461/too-many-values-to-unpack-with-solvepnpransac-pose-estimation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值