Python:solvePnP()没有足够的值来解包?

2024-04-26 18:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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, rotationVectors, translationVectors, inliers = cv2.solvePnP(objp, corners2, matrix, distortion) ValueError: not enough values to unpack (expected 4, got 3)


Tags: the函数img错误cv2fnamematrixret
1条回答
网友
1楼 · 发布于 2024-04-26 18:27:47

opencv2 documentation

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

因此只有3个值需要解压缩。
因此,您应该能够修复:

^{pr2}$

As solvePnP()只返回retvalrvec和{}。在

相关问题 更多 >