无法在PCL中显示HSV点云

时间:2018-02-06 05:35:48

标签: c++ point-cloud-library

我已经捕获了PointXYZRGBA类型的点云,如下所示 -

Point Cloud of type PointXYZRGBA

我将其转换为PointXYZHSV并尝试使用它进行可视化 PCLVisualizer。令人惊讶的是,PCLVisualizer将其显示为黑色和白色,如下所示 -

Point Cloud of type PointXYZHSV

以下是代码段 -

typedef pcl::PointXYZHSV PointHSV; 
typedef pcl::PointXYZRGBA PointRGBA; 
typedef pcl::PointCloud<PointHSV> PointCloudHSV; 
typedef pcl::PointCloud<PointRGBA> PointCloudRGBA; 

int main (int argc, char** argv) 
{ 
    pcl::visualization::PCLVisualizer viewer("Cloud Viewer"); 
    PointCloudRGBA::Ptr rgba_cloud (new PointCloudRGBA); 
    PointCloudHSV::Ptr hsv_cloud (new PointCloudHSV); 

    pcl::io::loadPCDFile("capture.pcd", *rgba_cloud); // read pcd
    pcl::PointCloudXYZRGBtoXYZHSV(*rgba_cloud, *hsv_cloud); // convert to hsv
    viewer.addPointCloud<PointHSV>(hsv_cloud, "hsv_cloud_name"); // show hsv

    viewer.spin(); 
    return 0; 
}

可以从here下载PCD文件。我在Ubuntu 14.04 LTS 64位操作系统中使用PCL_VERSION:1.8.1.99。

我很担心,因为我稍后会使用PointXYZHSV进行Point云的基于颜色的分割。

如何可视化HSV点云?谢谢。

1 个答案:

答案 0 :(得分:1)

对于仍在深入研究此问题的人,PCL Visualizer不准备处理RGB(和强度类型)以外的不同颜色空间用于显示目的。利用pcl::PointXYZHSVtoXYZRGB来处理点云转换

void pcl::PointXYZHSVtoXYZRGB (const PointXYZHSV& in, PointXYZRGB& out);