OpenCV Python:distCoeffs2 不是数值元组

OpenCV Python : distCoeffs2 is not a numerical tuple

我正在使用 https://github.com/erget/StereoVision 提供的 StereoVision 框架从立体对重建 3D 点云。

所有脚本 运行 顺利,但执行 calibrate_cameras.py 脚本时出现以下错误:

distCoeffs2 is not a numerical tuple 

更具体地说,错误发生在以下代码片段中的 cv2.stereoCalibrate 函数调用中

    (calib.cam_mats["left"], calib.dist_coefs["left"],
     calib.cam_mats["right"], calib.dist_coefs["right"],
     calib.rot_mat, calib.trans_vec, calib.e_mat,
     calib.f_mat) = cv2.stereoCalibrate(self.object_points,
                                        self.image_points["left"],
                                        self.image_points["right"],
                                        calib.cam_mats["left"],
                                        calib.dist_coefs["left"],
                                        calib.cam_mats["right"],
                                        calib.dist_coefs["right"],
                                        self.image_size,
                                        calib.rot_mat,
                                        calib.trans_vec,
                                        calib.e_mat,
                                        calib.f_mat,
                                        criteria=criteria,
                                        flags=flags)[1:]

知道问题的原因以及解决方法吗?

我的系统:Windows7 + Python 2.7.14 + OpenCV 2.4.9

任何帮助将不胜感激

提前致谢

对于遇到相同问题的任何人,有一个简单而快速的解决方法:更改参数的位置 self.image_size

我post在这里希望它能对其他遇到同样问题的人有所帮助。

  • 转到 C:\Python27\Lib\site-packages\stereovision
  • 在 IDLE 中打开 calibration.py 脚本
  • 更改代码部分

    (calib.cam_mats["left"], calib.dist_coefs["left"],
     calib.cam_mats["right"], calib.dist_coefs["right"],
     calib.rot_mat, calib.trans_vec, calib.e_mat,
     calib.f_mat) = cv2.stereoCalibrate(self.object_points,
                                        self.image_points["left"],
                                        self.image_points["right"],
                                        calib.cam_mats["left"],
                                        calib.dist_coefs["left"],
                                        calib.cam_mats["right"],
                                        calib.dist_coefs["right"],
                                        self.image_size,
                                        calib.rot_mat,
                                        calib.trans_vec,
                                        calib.e_mat,
                                        calib.f_mat,
                                        criteria=criteria,
                                        flags=flags)[1:]
    

进入

    (calib.cam_mats["left"], calib.dist_coefs["left"],
     calib.cam_mats["right"], calib.dist_coefs["right"],
     calib.rot_mat, calib.trans_vec, calib.e_mat,
     calib.f_mat) = cv2.stereoCalibrate(self.object_points,
                                        self.image_points["left"],
                                        self.image_points["right"],
                                        self.image_size,
                                        calib.cam_mats["left"],
                                        calib.dist_coefs["left"],
                                        calib.cam_mats["right"],
                                        calib.dist_coefs["right"],
                                        calib.rot_mat,
                                        calib.trans_vec,
                                        calib.e_mat,
                                        calib.f_mat,
                                        criteria=criteria,
                                        flags=flags)[1:]
  • 保存文件

问题已解决!