Как изменить значения RGB для pcl::PointXYZRGBA?

У меня есть точка типа pcl::PointXYZRGBA. Как я могу назначить/изменить его значения RGB?

Для изменения координат xyz я могу просто сделать point.x = some_value.


person Community    schedule 14.04.2013    source источник
comment
Кажется, что класс Point не существует в документе Pcl... Я могу найти только pcl:: ТочкаXYZRGBA.   -  person Synxis    schedule 14.04.2013
comment
@Synxis: ты прав. Я имею в виду экземпляр с именем «точка» класса pcl::PointXYZRGBA .   -  person    schedule 14.04.2013
comment
Разве вы не можете использовать getRGBEigen3i() или point.r (и то же самое для gи b)?   -  person Synxis    schedule 14.04.2013
comment
@Synxis: с помощью getRGBEigen3i() я не могу их заменить. Об использовании point.r я нашел ветку на форуме пользователей pcl, в которой говорилось об обратном.   -  person    schedule 14.04.2013
comment
я заменил один из ваших тегов, правильный - point-cloud-library   -  person Oszkar    schedule 23.05.2013


Ответы (2)


Или просто используйте

point.r = 255;
point.b = 0;
point.g = 0;
point.a = 255;
person Deepfreeze    schedule 19.11.2014
comment
Это должен быть исправленный ответ. Просто и понятно. - person ArtificiallyIntelligence; 17.06.2016

Вы можете использовать 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;

EDIT: Или, если вам нужно придерживаться 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
person Fei    schedule 16.04.2013
comment
Ваша вторая часть неверна - .rgba это uint32_t - person Eric; 29.02.2016