如何更改 pcl::PointXYZRGBA 的 RGB 值?

7

我有一个类型为pcl::PointXYZRGBA的点。如何分配/更改其rgb值?

要更改xyz坐标,我可以简单地执行point.x = some_value


1
Point类在Pcl文档中似乎不存在...我只能找到pcl::PointXYZRGBA - Synxis
@Synxis:你说得对。我指的是 pcl::PointXYZRGBA 类的名为 'point' 的实例。 - user1403483
你不能使用 getRGBEigen3i() 或者 point.r(对于 gb 同样如此)吗? - Synxis
@Synxis:使用getRGBEigen3i(),我无法替换它们。关于使用point.r,我在pcl-users论坛上找到了一篇帖子说相反。 - user1403483
我已经替换了你的一个标签,正确的标签是point-cloud-library。 - Oszkar
2个回答

10

或者只需使用

point.r = 255;
point.b = 0;
point.g = 0;
point.a = 255;

1
这应该是正确的答案。简单明了。 - ArtificiallyIntelligence

4

您可以使用pcl::PointXYZRGB代替pcl::PointXYZRGBA。我认为它们的功能是相同的。然后,要将一个点变成红色(255,0,0),您可以执行以下操作:

pcl::PointXYZRGB point = pcl::PointXYZRGB(255, 0, 0);

然后可以分别指定xyz坐标:

point.x = x;
point.y = y;
point.z = z;
编辑: 或者如果你必须坚持使用pcl::PointXYZRGBA,你可以这样做。
pcl::PointXYZRGBA point;
uint8_t r = 255;
uint8_t g = 0;
uint8_t b = 0;
int32_t rgb = (r << 16) | (g << 8) | b; 
point.rgba = *(float *)(&rgb); // makes the point red

你的第二部分是错误的 - .rgba 是一个 uint32_t - Eric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接