【问题标题】:Python - OpenCV stereoCalibrate() too manu values to unpackPython - OpenCV stereoCalibrate() 太多值无法解包
【发布时间】:2017-08-09 12:07:06
【问题描述】:

我正在使用 OpenCV 进行立体校准。我已经对各个相机进行了校准。对于以下代码sn -p:

ret, rot, trans, ess, fund = cv2.stereoCalibrate(objectPoints=objpoints,
                                                 imagePoints1=imgpoints1,
                                                 imagePoints2=imgpoints2,
                                                 cameraMatrix1=mtx1,
                                                 distCoeffs1=dist1,
                                                 cameraMatrix2=mtx2,
                                                 distCoeffs2=dist2,
                                                 imageSize=gray1.shape[::-1],
                                                 flags=cv2.CALIB_FIX_INTRINSIC)

我得到错误:

Traceback (most recent call last):
   File "stereoCalibration.py", line 94, in <module>
  flags=cv2.CALIB_FIX_INTRINSIC)
ValueError: too many values to unpack (expected 5)

但我已经在左侧有五个变量。根据这个documentation,当flags=cv2.CALIB_FIX_INTRINSIC时,函数cv2.stereoCalibrate()应该返回5个值。

Python: cv2.stereoCalibrate(objectPoints, imagePoints1, imagePoints2, cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, imageSize[, R[, T[, E[, F[, flags[, criteria]]]]]]) → retval, cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, R, T, E, F

CV_CALIB_FIX_INTRINSIC 修复 cameraMatrix?和 distCoeffs?以便只估计 R、T、E 和 F 矩阵。

PS:我找到了这个answer,但它不适用于cv2

【问题讨论】:

  • 您可以将返回的cv2.stereoCalibrate() 值分配给list 并检查值的数量吗?这样你就可以确认了。
  • @Anil_M 谢谢这工作。看起来这是返回 9 个值。但他的文档说明了其他内容。
  • @harshatech2012,我添加了我的回复作为答案,你介意接受吗?这样问题就不会悬而未决。

标签: python opencv computer-vision stereo-3d


【解决方案1】:

如果您将 cv2.stereoCalibrate() 的返回值分配给 list 并检查值的数量,您可以知道它是否确实返回了 5 个值或其他值。这样您就可以修复您的接收变量并相应地调整您的代码。

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 2019-03-28
    • 2013-06-06
    • 2017-07-17
    • 1970-01-01
    • 2015-03-15
    相关资源
    最近更新 更多