分享

PCL-点的颜色解析方法

 Y忍冬草 2017-07-12

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);
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多