【问题标题】:How can I change RGB values of pcl::PointXYZRGBA?如何更改 pcl::PointXYZRGBA 的 RGB 值?
【发布时间】:2013-04-06 15:09:56
【问题描述】:

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

要改变 xyz 坐标,我可以简单地做point.x = some_value

【问题讨论】:

  • Point似乎在Pcl文档中不存在...我只能找到pcl::PointXYZRGBA
  • @Synxis:你是对的。我指的是 pcl::PointXYZRGBA 类的一个名为 'point' 的实例。
  • 你不能使用getRGBEigen3i()point.rgb也一样)?
  • @Synxis :使用 getRGBEigen3i(),我无法替换它们。关于使用 point.r,我在 pcl-users 论坛上找到了一个帖子,说不然。
  • 我已经替换了你的一个标签,正确的是 point-cloud-library

标签: c++ opencv image-processing computer-vision point-cloud-library


【解决方案1】:

您可以使用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

【讨论】:

  • 你的第二部分错了 - .rgbauint32_t
【解决方案2】:

或者直接使用

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

【讨论】:

  • 这应该是正确的答案。简单明了。
猜你喜欢
  • 2010-12-07
  • 1970-01-01
  • 2020-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
相关资源
最近更新 更多