opencv - 为什么cv::stereoRectify返回大小为(0,0)的ROI

标签 opencv stereo-3d calibration

我正在学习opencv并测试立体相机。在我的代码中,stereoRectify函数有时会返回其大小为(0,0)的ROI。
我无法弄清楚这个问题。

Mat cameraMatrix[2], distCoeffs[2];
cameraMatrix[0] = initCameraMatrix2D(objectPoints, imagePoints_l, 
  imageSize, 0);
cameraMatrix[1] = initCameraMatrix2D(objectPoints, imagePoints_r, 
  imageSize, 0);

Mat R, T, E, F;
double rms = stereoCalibrate(objectPoints, imagePoints_l, imagePoints_r,
  cameraMatrix[0], distCoeffs[0],
  cameraMatrix[1], distCoeffs[1],
  imageSize, R, T, E, F,
  CALIB_FIX_ASPECT_RATIO +
  CALIB_ZERO_TANGENT_DIST +
  CALIB_USE_INTRINSIC_GUESS +
  CALIB_SAME_FOCAL_LENGTH +
  CALIB_RATIONAL_MODEL +
  CALIB_FIX_K3 + CALIB_FIX_K4 + CALIB_FIX_K5,
  TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, 1e-5));

Mat R1, R2, P1, P2, Q;
Rect validRoi[2];

stereoRectify(cameraMatrix[0], distCoeffs[0],
  cameraMatrix[1], distCoeffs[1],
  imageSize, R, T, R1, R2, P1, P2, Q,
  CALIB_ZERO_DISPARITY, 0.5, imageSize, &validRoi[0], &validRoi[1]);

cout << validRoi[0] << validRoi[1] << endl;

在终端输出:
[0 x 0 from (0, 0)][215 x 184 from (77, 19)]

要么:
[0 x 0 from (0, 0)][0 x 0 from (0, 0)]

我还输出了相机矩阵和失真矩阵:
[204.3355426705726, 0, 193.3280616575545;
0, 189.8976931576431, 123.307676870377;
0, 0, 1]
[-0.5404320611827982, 0.3292134879059271, 0, 0, 0, 0, 0, 
0.1371856537119246, 0, 0, 0, 0, 0, 0]
[204.3355426705726, 0, 183.756931129648;
0, 189.8976931576431, 131.4500619272754;
0, 0, 1]
[-0.524923482702874, 0.3121043629068334, 0, 0, 0, 0, 0, 
0.1269780773557047, 0, 0, 0, 0, 0, 0]

最佳答案

截至目前(2018年3月31日,opencv 3.4.1),许多用户报告立体声矫正返回无效结果:

https://github.com/opencv/opencv/issues/11131

关于opencv - 为什么cv::stereoRectify返回大小为(0,0)的ROI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47882362/

相关文章:

python - VTK更新多个渲染窗口的位置

iphone - iPhone 加速度计是否已校准?重力测量根据方向而变化

opencv - 使用 Opencv 进行头部姿势估计

opencv - 自动对焦后如何关联检测到的关键点

c++ - Open CV 和 3D 坐标中的立体校准

objective-c - 加速度计和校准 - iPhone SDK

linux - 未检测到设备时如何让颜色安装 ICC 配置文件?

c++ - 使用 videowriter opencv 的视频大小为 0 字节

c++ - 如何使用BackgroundSubtractorMOG2处理图像

保存图像时JavaCV EXCEPTION_ACCESS_VIOLATION