【问题标题】:OpenCV: transform point clouds to leftmost camera's coordinate systemOpenCV:将点云转换为最左边的相机坐标系
【发布时间】:2013-11-16 14:03:39
【问题描述】:

我正在使用 OpenCV 从多个图像的运动中构建结构。我有 8 张图像,并且为每对图像(img1&2、img2&3、img3&4 等)生成了 3D 点云。我知道每个单独的 3D 点云都是正确的,因为它们在 VTK / OpenGL 中显示时看起来不错。

我的相机经过(粗略)校准,焦距使用 EXIF 元数据,图像中心作为主要点。

如何将这些 3D 点云中的每一个转换为最左侧相机的 3D 坐标系?

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    我假设您的点云以 PCL 兼容格式存储;那么你可以简单地使用pcl::transformPointCloud.. 如果没有,那么你将需要根据transforms.hpp.. 中给出的源代码实现你自己的。

    HTH

    编辑:

    请参阅this presentation 中的幻灯片 16-19。转换模型是,

    P_c = R_c (P_w - C)

    这是我之前链接中给出的转换的数学形式。

    【讨论】:

    • 我的点存储在一个文本文件中,每行一个点的 x,y,z 坐标。
    • 如果它们有x、y和z坐标,那么你可以对它们应用这个函数(你甚至不需要构建PCL,只需在你自己的函数中使用实现)..跨度>
    • 我正在使用 OpenCV 的 python 绑定,那么这仍然可能吗?在我看来,我必须将源代码翻译成 Python。
    • 是的,PCL 和 OpenCV 完全基于 C++ 构建。不过,编写等效的 Python 代码应该不难。
    • 我明白了。这是否意味着我无法调用 OpenCV 函数来转换 3D 坐标系?我一直在尝试使用 solvePnP 来获取相机位置,但我无法确定它相对于哪个坐标系。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多