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:]
- 保存文件
问题已解决!
我正在使用 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:]
- 保存文件
问题已解决!