2

Inforamtion基本TOF相機模塊流的深度圖像:如何從點雲中圖書館(PCL)

  1. 我有一個簡單的飛行時間(飛行時間)相機模塊由一個只包含一個供應商提供深度節點。

  2. 我已經設置了PCL環境,並且可以編譯和執行它提供的示例代碼。

  3. ToF相機模塊附帶的源代碼顯示瞭如何從硬件設備獲取深度原始數據(x,y,z值),但並未告知如何將其作爲點雲圖像和深度圖像。

  4. Win 7 64bit,Visual Studio 2008,PCL all-in-one 32bit。

其結果是,我打算使用PCL顯示點雲圖像和深度圖像與X,Y,Z的數據我可以從相機模塊獲得,進一步,如果流是可能的。

不過,據我所知,現在是PCL趨於所有的點雲數據存儲爲.PCD文件,然後讀取它從而輸出點雲圖像和深度圖像。

這顯然是太慢了,做這樣的方式流,如果我要savePCD()和readPCD()每次在每一幀。所以我研究了「openni grabber」和「openni range image visualization」示例代碼,並嘗試執行它們,遺憾的是「沒有連接設備」。是我得到的。

我有一些想法,以尋求建議之前,我嘗試:

  1. 是否有使用Openni除了Kinect的,Xtion PrimeSense的,並在設備上的方法嗎?即使它只是一個沒有名字的設備,只有深度節點?

  2. PCL能否在不訪問.pcd文件的情況下顯示點雲圖像和深度圖像?換句話說,我可以只分配每個頂點的值並構建一個圖像嗎?

  3. 我可以只歸所有頂點,並構建一個圖像勉強opencv的?

  4. 有沒有其他方法可以在點雲圖像和深度圖像中流式傳輸ToF相機模塊?

回答

1

1)更改OpenNI採集卡使用自己的ToF攝像頭將比在下面顯示的循環中使用攝像頭中的示例更有用。

2)是PCL可以在不訪問.pcd文件的情況下顯示點雲圖像和深度。 .pcd加載程序所做的是解析pcd文件並將值以雲格式進行放置。您可以直接從您的相機數據做到這一點,如下所示。

3)不知道你在這裏的意思。我建議你嘗試使用下面提出的pcl可視化工具或雲查看器。

你可以這樣做:

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: 

http://pointclouds.org/documentation/tutorials/cloud_viewer.php#cloud-viewer

http://pointclouds.org/documentation/tutorials/pcl_visualizer.php#pcl-visualizer

+0

謝謝你的提醒,我得到了(2)由我自己。 – APU