python:solvepnp()没有足够的值来解开包装



我对openCV的 cv2.solvePnP函数有问题。此功能用于获得国际象棋板的姿势估计。在以下代码之后,我会收到一个错误:

for fname in glob.glob('Images/Calibragem/img1*.jpg'):
    img = cv2.imread(fname)
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    ret, corners = cv2.findChessboardCorners(gray, (9,6), None)
    if ret==True:
        corners2=cv2.cornerSubPix(gray,corners,(11,11),(-1,-1), criteria)
        #finds the vectors of rotation and translation
        ret, rotationVectors, translationVectors, inliers = 
            cv2.solvePnP(objp, corners2, matrix, distortion)
        #projects the 3D points in the image
        imgpts,jac = cv2.projectPoints(axis,rotationVectors,translationVectors,matrix,distortion)
        imgAxis=drawAxis(img,corners2,imgpts)
        cv2.imshow('imgAxis', imgAxis)
        cv2.imwrite('imgAxis.png',imgAxis)

错误说:

ret,旋转向量,翻译向量,inliers = cv2.solvepnp(objp,corners2,矩阵,失真) ValueError:没有足够的值解开包装(预期4,GoT 3)

来自opencv2文档:

 Python: cv2.solvePnP(objectPoints, imagePoints, cameraMatrix, distCoeffs[, rvec[, tvec[, useExtrinsicGuess[, flags]]]]) → retval, rvec, tvec¶

所以只有3个值可以解开包装。
因此,您应该能够解决:

ret, rotationVectors, translationVectors = 
            cv2.solvePnP(objp, corners2, matrix, distortion)

作为solvepnp()仅返回retvalrvectvec

相关内容

  • 没有找到相关文章

最新更新