cv2.stereocalibrate()关于“cameraMatrix”不是数值tup的错误

2024-09-28 17:06:15 发布

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

我在估计立体摄像机的距离。我使用的是Python2.7.11和OpenCV3.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()函数将camera matrix更改为tuple可能会有效。它没有改变任何东西。然后我想问题可能出在我使用的opencv版本上,所以我把它改成了2.4.13版本,但这并没有改变任何东西。在所有这些尝试之后,我想让stereocalibrate()在不进行任何单个相机校准的情况下自行进行相机矩阵和失真系数估计。在

代码如下:

^{pr2}$

但是它得到了一个错误消息:“TypeError:Required参数'distCoeffs1'(pos 5)not found” 我就是不明白为什么这个功能不起作用。我只想计算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),但省略它们对我来说是个错误。第一个问题仍然存在。在

谢谢你的帮助

马苏德军刀


Tags: 函数版本参数错误cv2flags校准criteria