OpenCV Python:distCoeffs2不是数字元组

时间:2018-03-28 11:04:42

标签: python opencv camera-calibration cv2 stereoscopy

我使用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:]

对导致问题的原因以及如何解决问题有所了解?

我的系统:Windows 7 + Python 2.7.14 + OpenCV 2.4.9

任何帮助都将受到高度赞赏

提前致谢

1 个答案:

答案 0 :(得分:1)

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

我在这里发帖,希望对其他有相同问题的人有所帮助。

  • 转到C:\ Python27 \ Lib \ site-packages \ stereovision
  • 在IDLE中打开calib.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:]
  • 保存文件

问题是解决的!