c++ - OpenCV 立体校准产生微小/零大小的 ROI
问题描述
我正在尝试使用 OpenCV 的现成立体校准代码(使用所有默认参数并使用 Bouguet 算法)校准我的立体相机,但校正后的图像没有显示出良好的校准:它们被裁剪得太多以至于图像仅由几个像素组成。我不确定我做了什么,因为我能够让这个校准脚本与另一对相机一起工作......我正在使用 20 对图像进行校准并改变棋盘相对于每个图像中的相机。任何建议将不胜感激!
解决方案
我找到了解决办法!事实证明,使用CALIB_FIX_K3 + CALIB_FIX_K4 + CALIB_FIX_K5
flag 参数中的默认值会cv::stereoCalibrate
导致此问题,只需删除它们即可解决问题。为清楚起见,这是工作函数调用的样子:
double rms = stereoCalibrate(objectPoints, imagePoints[0], imagePoints[1],
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,
TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 100, 1e-5) );
推荐阅读
- sql - 通过 SQL 类型转换获得的奇怪十进制值
- python - 如何在注册时注册此离线钱包?
- javascript - 包含对象数组和字符串数组的深拷贝道具
- symfony - webpack-encore .setPublicPath 相对忽略
- javascript - 如何在 vuejs 中单击按钮时打开 div 标签?
- python - ValueError:您正在尝试合并 object 和 int64 列。将类型更改为字符串但尚未解析
- java - 虽然 startActivity() 在 Android 9 中捕获错误验证类
- networking - 我的蜂窝网络的网关路由器在哪里
- python - 将数据框导出/导入为 Excel 工作表
- pytorch - PyTorch Geometric:分割训练/验证/测试以进行节点分类的功能实用程序是什么