5

Ho un punto del tipo pcl::PointXYZRGBA. Come posso assegnare/modificare i suoi valori rgb?Come posso modificare i valori RGB di pcl :: PointXYZRGBA?

Per modificare le coordinate xyz, posso semplicemente fare point.x = some_value.

+1

La classe 'Point' non sembra esistere nel doc Pcl ... posso trovare solo [PCL :: PointXYZRGBA] (http://docs.pointclouds.org/trunk/structpcl_1_1_point_x_y_z_r_g_b_a.html). – Synxis

+0

@Synxis: hai ragione. Mi riferisco a un'istanza chiamata 'point' della classe pcl :: PointXYZRGBA. –

+0

Non puoi usare 'getRGBEigen3i()', o 'point.r' (e lo stesso per' g' e 'b')? – Synxis

risposta

4

È possibile utilizzare pcl::PointXYZRGB anziché pcl::PointXYZRGBA. Penso che entrambi facciano lo stesso. E poi per colorare un punto rosso (255,0,0), si può fare:

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

E i xyz coordinate possono poi essere assegnati rispettivamente:

point.x = x; 
point.y = y; 
point.z = z; 

EDIT: O se si deve attaccare con pcl::PointXYZRGBA, si può fare

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 
+0

La tua seconda parte è errata - '.rgba' è un' uint32_t' – Eric

6

o semplicemente usare

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

Questa dovrebbe essere la risposta corretta. Semplice e chiaro – Shaowu

Problemi correlati