Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Python 2.7:cv2.stereoCalibrate()中的错误。必需参数';distCoeffs1';(位置5)未找到_Python 2.7_Opencv_Stereo 3d - Fatal编程技术网

Python 2.7 Python 2.7:cv2.stereoCalibrate()中的错误。必需参数';distCoeffs1';(位置5)未找到

Python 2.7 Python 2.7:cv2.stereoCalibrate()中的错误。必需参数';distCoeffs1';(位置5)未找到,python-2.7,opencv,stereo-3d,Python 2.7,Opencv,Stereo 3d,我当时正在使用Python 2.7和OpenCV 3.3进行立体摄像机校准。我使用的代码是(我从中获得): 但我得到的错误是: retval,cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, R, T, E, F = cv2.stereoCalibrate(objpointsL, imgpointsL, imgpointsR, (640,480)) TypeError: Required argument 'distCoeffs1'

我当时正在使用Python 2.7和OpenCV 3.3进行立体摄像机校准。我使用的代码是(我从中获得):

但我得到的错误是:

retval,cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, R, T, E, F = cv2.stereoCalibrate(objpointsL, imgpointsL, imgpointsR, (640,480))
TypeError: Required argument 'distCoeffs1' (pos 5) not found
我的代码、左图像和右图像都在同一个文件夹中。我读过其他类似的答案,但他们没有得到这个错误。(). 我想知道为什么会出现这个错误,以及如何解决这个问题


谢谢。

尝试将代码的最后几行更改为

cameraMatrix1 = None
distCoeffs1 = None
cameraMatrix2 = None
distCoeffs2 = None
R = None
T = None
E = None
F = None
retval, cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, R, T, E, F = cv2.stereoCalibrate(objpointsL, imgpointsL, imgpointsR, (640,480), flags=cv2.cv.CV_CALIB_FIX_INTRINSIC)

您可以尝试将
cv2.stereroCalibrate()
的返回值分配给
列表
并检查列表中的值。感谢@shawshank回复。但是我没有理解你,因为我刚刚开始学习python。我想你让我试试:output=cv2.stereoCalibrate(objpointsL,imgpointsL,imgpointsR,(480640))。但这个错误也是一样的。因为CameraMatrix X1、distCoeffs1、CameraMatrix X2、distCoeffs2没有在我上面的代码中任何地方定义(我必须找出这些),所以错误显示为NameError:name'CameraMatrix X1'没有定义。我尝试过这个,但错误显示为AttributeError:'module'对象没有属性'cv'。我还尝试通过删除cv来运行代码,但随后显示AttributeError:“module”对象没有属性“cv\u CALIB\u FIX\u Inhernal”。我也尝试了以下操作:retval、CameraTrix1、distCoeffs1、CameraTrix2、distCoeffs2、R、T、E、F=cv2。stereoCalibrate(objpointsL、imgpointsL、imgpointsR、CameraTrix1、distCoeffs1、CameraTrix2、distCoeffs2,(640480),R,T,E,F,flags=cv2.CALIB\u FIX\u intrinal)然后显示错误:cv2.error:C:\build\master\u winpack-bindings-win32-vc14-static\opencv\modules\calib3d\src\calibration.cpp:3104:error:(-215)nimages>0&&nimages==(int)imagePoints1.total()&(!imgPtMat2 | nimages==(int)imagePoints2.total())在函数cv::CollectCalibrationData中,您可以删除参数
flags=cv2.cv.CALIB\u FIX\u INTRINSIC
,因为对于您遇到的第二个错误,这意味着您的3D点和2D点的长度不同。你必须确保它们的长度相同。
cameraMatrix1 = None
distCoeffs1 = None
cameraMatrix2 = None
distCoeffs2 = None
R = None
T = None
E = None
F = None
retval, cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, R, T, E, F = cv2.stereoCalibrate(objpointsL, imgpointsL, imgpointsR, (640,480), flags=cv2.cv.CV_CALIB_FIX_INTRINSIC)