关于“cameraMatrix”不是数字元组的cv2.stereocalibrate()错误

问题描述 投票:0回答:1

我正在研究估计立体相机的距离。我正在使用python 2.7.11和OpenCV 3.1版本。我分别校准每个摄像头并找到内在参数。问题是,当我以OpenCV文档中所述的方式使用cv2.stereocalibtare()函数时,我得到错误:“TypeError:cameraMatrix1不是数字元组”。

代码如下所示:

stereo_criteria = (cv2.TERM_CRITERIA_MAX_ITER + cv2.TERM_CRITERIA_EPS, 100, 1e-5)
ret_stereo, R, T, E, F = cv2.stereoCalibrate(objpointsL, imgpointsL, imgpointsR, grayL.shape[::-1],mtxL, distcoeffL, mtxR, distcoeffR, criteria=stereo_criteria, flags=cv2.CALIB_FIX_INTRINSIC)

我认为使用tuple()函数将相机矩阵更改为元组可能会有效。它没有改变任何东西。然后我认为问题可能是我正在使用的opencv的版本所以我把它改成了2.4.13,但这也没有改变任何东西。在所有这些尝试之后,我想我让stereocalibrate()做了相机矩阵和失真系数估计本身,没有任何单一的相机校准。

代码看起来像这样:

stereo_criteria = (cv2.TERM_CRITERIA_MAX_ITER + cv2.TERM_CRITERIA_EPS, 100, 1e-5)
stereocalib_retval, cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, R, T, E, F = cv2.stereoCalibrate(objpointsL,imgpointsL,imgpointsR,grayL.shape, criteria=stereo_criteria)

但它得到一个错误说:“TypeError:必需的参数'distCoeffs1'(位置5)未找到”我只是无法弄清楚为什么这个功能不起作用。我想要的只是计算R,T,E,F值

更新:对于最后一个错误我试过这个:

stereocalib_retval, cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, R, T, E, F = cv2.stereoCalibrate(objpointsL,
                                                                                                         imgpointsL,
                                                                                                         imgpointsR,
                                                                                                         mtxL,
                                                                                                         distcoeffL,
                                                                                                         mtxR,
                                                                                                         distcoeffR,
                                                                                                         image_size,
                                                                                                         criteria=stereocalib_criteria,
                                                                                                         flags=stereocalib_flags)

它起作用了。虽然不需要放置cameraMatrix1,distCoeffs1,cameraMatrix2,distCoeffs2(并且实际上分别等于mtxL,discoeffL,mtxR,discoeffR)但是省略它们会导致我的错误。第一个问题仍然存在。

我感谢您的帮助

Masud Saber

python opencv camera calibration
1个回答
0
投票

这是我猜的版本问题。当我使用Opencv 3.3.1时,我遇到了同样的问题,但是当我改为2.4.13时它解决了。

© www.soinside.com 2019 - 2024. All rights reserved.