问题2的答案
我发现了问题所在 -3D点坐标很重要
!我假设无论我选择什么3D坐标点,重建都将照顾到它。但是,我注意到了一些奇怪的事情:当使用一系列3D点时,这些点中只有一部分被正确地重建。经过进一步调查,我发现只有在摄像机视场内的图像才能被正确地重建。视场是固有参数的函数(反之亦然)。
为使以上代码正常工作,请尝试按以下方式设置参数(本机来自我的相机):
...const double f_x = 2746.;const double f_y = 2748.;const double c_x = 991.;const double c_y = 619.;...const cv::Point3d point_single(10.0, -2.0, 30.0);...
另外,请不要忘记在相机坐标中负
y坐标为
UP:)
对问题1的回答:
我尝试使用以下方式访问内部函数时出现一个错误
...double f_x = intrinsic.at<double>(0, 0);double f_y = intrinsic.at<double>(1, 1);double c_x = intrinsic.at<double>(0, 3);double c_y = intrinsic.at<double>(1, 3);...
但是
intrinsic是一个
3x3矩阵。
故事的寓意 编写单元测试!!!



