RGB24图像颠倒解决方法

RGB24格式图像输出颠倒可以使用以下方法转换过来。

实现

  • 将数据强制转换为3字节(符合RGB24的数据排列方式);
  • 使用std::reverse函数将每3字节数据从头到尾颠倒一次。
    1
    2
    3
    4
    5
    6
    7
    8
    struct Rgb24Byte {
    uint8_t r;
    uint8_t g;
    uint8_t b;
    };

    Rgb24Byte *rgb24Buf = (Rgb24Byte *)rgb24Data;
    std::reverse(rgb24Buf, rgb24Buf + bufSize); // 反转数据

相关知识

  • RGB24图像为每个像素占用8bit(1个字节),数据排列顺序为BGR BGR BGR ...
  • reverse函数用于反转容器中的内容,包含在algorithm库中。效果:"123456" -> "654321"
  • RGB32RGB24相比没有本质区别,除了多了一个字节(透明度),每个像素占用32bit(4个字节),数据排列顺序为BGRA BGRA BGRA ...