我已经捕获了PointXYZRGBA
类型的点云,如下所示 -
我将其转换为PointXYZHSV
并尝试使用它进行可视化
PCLVisualizer。令人惊讶的是,PCLVisualizer将其显示为黑色和白色,如下所示 -
以下是代码段 -
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点云?谢谢。
答案 0 :(得分:1)
对于仍在深入研究此问题的人,PCL Visualizer不准备处理RGB(和强度类型)以外的不同颜色空间用于显示目的。利用pcl::PointXYZHSVtoXYZRGB
来处理点云转换
void pcl::PointXYZHSVtoXYZRGB (const PointXYZHSV& in, PointXYZRGB& out);