5

pcl::PointXYZRGBA türünde bir nokta var. Rgb değerlerini nasıl atayabilirim/değiştirebilirim?pcl :: PointXYZRGBA'nın RGB değerlerini nasıl değiştirebilirim?

Xyz koordinatlarını değiştirmek için point.x = some_value'u yapabilirim.

+1

'Point' sınıfı Pcl belgesinde var gibi görünmüyor ... Sadece [pcl :: PointXYZRGBA] 'yı bulabilirim (http://docs.pointclouds.org/trunk/structpcl_1_1_point_x_y_z_r_g_b_a.html). – Synxis

+0

@Synxis: Haklısınız. Ben pcl :: PointXYZRGBA sınıfının 'point' adında bir örneğe başvuruyorum. –

+0

"getRGBEigen3i()' veya "point.r" (ve "g" ve "b" için aynıdır) kullanamazsınız? – Synxis

cevap

4

pcl::PointXYZRGBA yerine pcl::PointXYZRGB kullanabilirsiniz. Bence ikisi de aynı şeyi yapıyorlar. Ve sonra bir nokta kırmızı (255,0,0) renklendirmek için yapabileceğiniz:

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

Ve xyz koordinatlar daha sonra sırasıyla atanabilir: Veya eğer: DÜZENLEME

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

Eğer

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

İkinci bölümün yanlış - '.rgba' bir' uint32_t' – Eric

6

yapmak Ya da sadece kullanabilirsiniz pcl::PointXYZRGBA sopa ile sahip

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

Bu düzeltilmiş cevap olmalı. Basit ve açık. – Shaowu

İlgili konular