C++ OpenCV V4.x中的新版双目标定函数stereoCalibrate() 参数说明【新增perViewErrors】

本文介绍了OpenCV V4.x中新增的双目标定函数stereoCalibrate(),特别是新增的perViewErrors参数,用于输出每对图像的重投影误差。文章详细解析了函数的各参数类型,帮助开发者理解如何正确使用该函数,避免出现数据维度或类型错误导致的运行时异常。
摘要由CSDN通过智能技术生成


OpenCV V4.x以后的版本中补充了一个重载的双目标定函数 cv::stereoCalibrate(),这个新函数中补充了一个输出量,即perViewErrors代表每对图像所对应的均方根重投影误差(RMS re-projection error),可以更方便检视输入的标定板图像存在的误差,从而进行剔除或重拍用以提高标定精度。建议之后再去做双目标定时都尽量采用新的函数。

函数定义


double cv::stereoCalibrate	(	InputArrayOfArrays 	objectPoints,
								InputArrayOfArrays 	imagePoints1,
								InputArrayOfArrays 	imagePoints2,
								InputOutputArray 	cameraMatrix1,
								InputOutputArray 	distCoeffs1,
								InputOutputArray 	cameraMatrix2,
								InputOutputArray 	distCoeffs2,
								Size 	imageSize,
								InputOutputArray 	R,
								InputOutputArray 	T,
								OutputArray 	E,
								OutputArray 	F,
								OutputArray 	perViewErrors,
								int 	flags = CALIB_FIX_INTRINSIC,
								TermCriteria 	criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 1e-6) 
							)	

但是这个函数在OpenCV官网Doc中,对于其参数数据类型补充极其模糊,导致C++下去使用该函数的时候压根不知道该把参数初始化为什么类型,如图所示就是其官网对于该函数的说明(你告诉我个OutputArray,我TM哪里知道他是啥数据格式

在这里插入图片描述
其他参数还好毕竟有个例程,但是这个新增perViewErrors,我按照他的描述分别尝试vector<float>vector<Point2f>vector<vector<float>> 全部都会在运行时报这么一个错误:

OpenCV(4.3.0) Error: Assertion failed (d == 2 && (sizes[0] == 1 || sizes[1] == 1 || sizes[0]*sizes[1] == 0)) in cv::debug_build_guard::_OutputArray::create, file D:\OpenCV\opencv\sources\modules\core\src\matrix_wrap.cpp, line 1366

这个报错的含义基本上就是输入的数据维度或者类型存在问题,我最后还是在一个java的OpenCV DOC中才找到具体的函数定义实际上是Mat。为方便大家使用,我这边还是把这个函数具体的参数说明做一个补充吧,也是做一个问题记录。

参数补充说明

  1. objectPoints:【输入量】标定板特征点在世界坐标系下的坐标,为 M ∗ N ∗ 3 M*N*3 MN
  • 9
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ViolentElder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值