我正在使用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

任何帮助将不胜感激

提前致谢

最佳答案

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

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

  • 转到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:]
    
  • 保存文件

  • 问题已解决!

    07-26 03:33