5

Ich habe einen Punkt des Typs pcl::PointXYZRGBA. Wie kann ich seine rgb-Werte zuweisen/ändern?Wie kann ich RGB-Werte von pcl :: PointXYZRGBA ändern?

Um xyz-Koordinaten zu ändern, kann ich einfach point.x = some_value tun.

+1

Die Klasse 'Point' scheint im Pcl-Dokument nicht zu existieren ... Ich kann nur [pcl :: PointXYZRGBA] (http://docs.pointclouds.org/trunk/structpcl_1_1_point_x_y_z_r_g_b_a.html) finden. – Synxis

+0

@Synxis: Sie haben Recht. Ich beziehe mich auf eine Instanz namens 'Punkt' der Klasse pcl :: PointXYZRGBA. –

+0

Können Sie 'getRGBEigen3i()' oder 'point.r' (und dasselbe für' g'und 'b') nicht verwenden? – Synxis

Antwort

4

Sie können pcl::PointXYZRGB anstelle von pcl::PointXYZRGBA verwenden. Ich denke, beide machen das gleiche. Und dann einen Punkt rot zu färben (255,0,0), können Sie tun:

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

und die xyz-Koordinaten können dann jeweils zugeordnet werden:

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

EDIT: Oder wenn Sie haben mit pcl::PointXYZRGBA zu halten, können Sie

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

Ihr zweiter Teil ist falsch - '.rgba' ist ein' uint32_t' – Eric

6

tun Oder benutzen Sie einfach

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

Dies sollte die korrigierte Antwort sein. Einfach und klar. – Shaowu