首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用点云库从基本的ToF相机模块中获取深度图像

如何用点云库从基本的ToF相机模块中获取深度图像
EN

Stack Overflow用户
提问于 2014-12-31 07:21:55
回答 1查看 1.9K关注 0票数 2

信息:

  1. 我有一个简单的ToF(飞行时间)相机模块,由一个供应商提供,其中只包含一个深度节点。
  2. 我已经设置了PCL环境,可以编译和执行它提供的示例代码。
  3. ToF相机模块附带了源代码,演示如何从硬设备获取深度原始数据( x、y、z值),但没有说明如何将其作为点云图像和深度图像流。
  4. Win 7 64位,2008,PCL全合一32位.

因此,我计划使用PCL显示点云图像和深度图像,我可以从该相机模块获得x、y、z数据,而且,如果可以流的话。

但是,据我目前所知,PCL倾向于将所有点云数据存储为.pcd文件,然后读取它,从而输出点云图像和深度图像。

如果必须每次都在每个帧中执行savePCD()和readPCD(),那么以这种方式执行流显然太慢了。因此,我研究了"openni grabber“和"openni范围图像可视化”示例代码,并尝试执行它们,遗憾的是,“没有设备连接”。是我的全部。

在尝试之前,我有几个想法要征求意见:

  1. 除了Kinect、Xtion和PrimeSense之外,有没有一种在设备上使用Openni的方法?即使它只是一个没有名称和只有深度节点的设备?
  2. PCL可以在不访问.pcd文件的情况下显示点云图像和深度图像吗?换句话说,我可以只分配每个顶点的值并构造一个图像吗?
  3. 我能不能规范所有的顶点,用几乎没有Opencv的方式来构造一个图像?
  4. 在点云图像和深度图像中是否有其他方法来流该ToF相机模块?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-06 16:48:31

1)更改OpenNI抓取器以使用您自己的ToF摄像机将比在下面的循环中使用相机中的示例要多得多。

2)是的,PCL可以在不访问.pcd文件的情况下显示点云图像和深度。.pcd加载程序所做的是解析pcd文件并将值放置在云格式中。您可以直接从您的相机数据这样做,如下所示。

3)不知道你在这里的意思。我建议您尝试使用pcl可视化器或云查看器,如下所示。

你可以这样做:

代码语言:javascript
运行
复制
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
cloud->isDense = true;
cloud->width = widthOfTOFsensor;
cloud->height = heightOfTOFsensor;
cloud->size = cloud->width * cloud->height;

//Create some loop

    //grabNewFrame from TOFsensor

    for(int pointIndex=0;pointIndex<cloud->size();pointIndex++)
    {
        cloud->points[pointIndex].x = tofSensorData[pointIndex].x; //Don't know the tofData format, so I just guessed something.
        cloud->points[pointIndex].y = tofSensorData[pointIndex].y;
        cloud->points[pointIndex].z = tofSensorData[pointIndex].z;
    }

    // Plot the data using pcl visualizer or cloud viewer, see:

viewer.php#cloud-viewer

visualizer.php#pcl-visualizer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27717668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档