PCL中点的颜色使用uint8_t来存储R、G、B分量,而在存储时将三个uint8_t合并为一个float。在实际使用中并不需要关心这些细节。单个float类型表示的颜色和三个uint8_t表示的颜色相互转换的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <stdint.h> int main() { //定义r、g、b分量 uint8_t r = 174, g = 64, b = 254; //使用位运算符将三个uint8_t合并为一个uint32_t uint32_t rgb = ( static_cast <uint32_t> (r) << 16 | static_cast <uint32_t> (g) << 8 | static_cast <uint32_t> (b)); //将调用reinterpret_cast将uint32_t转换为float float rgbF = * reinterpret_cast < float *>(&rgb); //将调用reinterpret_cast将uint32_t转换为float rgb = * reinterpret_cast <uint32_t*>(&rgbF); //解析出r、g、b分量 uint8_t rr = (rgb >> 16) & 0x0000ff; uint8_t gg = (rgb >> 8) & 0x0000ff; uint8_t bb = (rgb)& 0x0000ff; return (0); } |
联系客服