【问题标题】:Coloring specific points in the point cloud为点云中的特定点着色
【发布时间】:2020-02-29 11:28:28
【问题描述】:

我需要帮助为点云中的特定点着色。我有需要着色的点的索引。目前,点云使用 pcl::visualization::PointCloudColorHandlerGenericField 为点类型中的特定字段着色。 我绘制了一个 3D 框,其中包含必须以不同颜色着色的点。目前,位于 3D 框中的点也已使用 pcl::visualization::PointCloudColorHandlerGenericField 着色。

由于声誉问题,无法附加图片。

【问题讨论】:

  • 请更具体地说明您的要求/什么不起作用。另外,请发布您目前拥有的代码(包括您在哪里添加、着色和显示 旋转 可视化器中的点云)

标签: point-cloud-library point-clouds


【解决方案1】:

希望对你有帮助,

首先,您必须使用pcl::ExtractIndices 提取点云中特定点的索引并将其存储在新的点云变量中,

然后,这个示例代码可以作为参考

inline float PackRGB(uint8_t r,uint8_t g,uint8_t b) {
  uint32_t color_uint = ((uint32_t)r << 16 | (uint32_t) g << 8 | (uint32_t)b);
  return *reinterpret_cast<float*>(&color_uint);
}

int main(){
  pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>()); //your cloud that you want to colorize

  cloud->width = (1000000);
  cloud->height = 1;
  cloud->points.resize(cloud->width * cloud->height);


  for(auto &it : cloud->points){
    it.x = 1024 * rand() / (RAND_MAX + 1.0f);
    it.y = 1024 * rand() / (RAND_MAX + 1.0f);
    it.z = 1024 * rand() / (RAND_MAX + 1.0f);
    it.rgb = PackRGB(63, 81, 181);
  }

  pcl::io::savePCDFileASCII("cloudname.pcd", *cloud);

  return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    • 2012-11-28
    • 2020-12-09
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    相关资源
    最近更新 更多