有没有办法从 std::istream 而不是文件名获取 pcl 点云

is there a way to get a pcl pointcloud from std::istream instead of a filename

我想从 istream 输出一个 pcl 点云(层文件直接从服务器读取,不能保存在本地)。如果有办法实现这一目标,任何人都可以提供帮助吗?

我熟悉 pcl::io::loadPLYFile<pcl::PointXYZRGBA>(std::string fname, *cloud); 但我正在寻找的函数是 xxxx(std::istream, *cloud); 的形式 我试着在 github 中查看 pcl 的代码库但是哪儿也去不了! :(

我认为 PCL 没有一项功能可以满足您的要求。但是看看.ply file format,我建议你做一些类似下面的事情

  1. 逐行浏览文件
  2. 找到 element vertex X 后,保留数字 X[=​​21=]
  3. 找到end_header后,开始从下一行到下X
  4. 读取顶点值(我猜是按照x y z r g b a的顺序)
  5. 将读取值分配给您创建的点云