5

मेरे पास pcl::PointXYZRGBA प्रकार का एक बिंदु है। मैं अपने आरजीबी मूल्यों को असाइन/कैसे बदल सकता हूं?मैं पीजीएल :: प्वाइंटएक्सवाईजेआरजीबीए के आरजीबी मूल्य कैसे बदल सकता हूं?

xyz निर्देशांक बदलने के लिए, मैं बस point.x = some_value कर सकता हूं।

+1

कक्षा 'प्वाइंट' Pcl दस्तावेज़ में मौजूद नहीं है ... मैं केवल [pcl :: PointXYZRGBA] (http://docs.pointclouds.org/trunk/structpcl_1_1_point_x_y_z_r_g_b_a.html) ढूंढ सकता हूं। – Synxis

+0

@ सिंक्सिस: आप सही हैं। मैं क्लास पीसीएल :: प्वाइंटएक्सवाईआरआरजीबीए के 'प्वाइंट' नामक एक उदाहरण का जिक्र कर रहा हूं। –

+0

क्या आप 'getRGBEigen3i()', या 'point.r' (और' g'and 'b' के लिए) का उपयोग नहीं कर सकते हैं? – Synxis

उत्तर

4

आप pcl::PointXYZRGBA के बजाय pcl::PointXYZRGB का उपयोग कर सकते हैं। मुझे लगता है कि वे दोनों एक ही करते हैं। और फिर एक बिंदु लाल (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 
+0

आपका दूसरा भाग गलत है - '.rgba' एक 'uint32_t' – Eric

6

कर सकते हैं या बस का उपयोग

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

है यह सही उत्तर होना चाहिए। सरल और स्पष्ट। – Shaowu

संबंधित मुद्दे