在使用gstreamer的过程中经常遇到各种类型的RGB格式图像。来看看各种格式有什么关系。RGB类型格式在内存中各个分量都是依次排序的。排序方式都是和命名方式的位置顺序是一致的,且各个分量都是占一个字节的大小。下面列出RGB的详细信息。

  • "RGB"

    +--+--+--+ +--+--+--+
    |R0|G0|B0| |R1|G1|B1| ...
    +--+--+--+ +--+--+--+Component 0: Rdepth:           8pstride:         3offset:          0Component 1: Gdepth:           8pstride:         3offset:          1Component 2: Bdepth            8pstride:         3offset:          2Imagedefault rstride: RU4 (width * 3)default size:    rstride (image) * height
    
  • "BGR" 则是反向RGB

    +--+--+--+ +--+--+--+
    |B0|G0|R0| |B1|G1|R1| ...
    +--+--+--+ +--+--+--+
    

而RGBx和RGBA只是在RGB的形式上多了一个通道而已。A代表Alpha通道,主要用来表示图像叠加时的透明度选择。x代表在RGB基础增加一个通道用来存储其他信息。这两个分量在内存上都是比RGB多占用一个字节。

  • "BGRA" 带有 Alpha 通道的 RGB

    +--+--+--+--+ +--+--+--+--+
    |B0|G0|R0|A0| |B1|G1|R1|A1| ...
    +--+--+--+--+ +--+--+--+--+
    
  • "RGBx" sparse RGB packed into 32 bit, space last

    +--+--+--+--+ +--+--+--+--+
    |R0|G0|B0|X | |R1|G1|B1|X | ...
    +--+--+--+--+ +--+--+--+--+
    

其他的ARGB或者BGRx格式都是大同小异,只是各分量排序方式不一样。

弄清楚了内存排序方式就很好实现转换格式了。下面给出GBRx转GBR示例代码。

void cvtColorGBRx2GBR(guint8 *rgb, const guint8 *src, int width, int height)
{for (int h = 0; h < height; h++){for (int w = 0, w1 = 0; w < width*3; w += 3, w1 += 4){rgb[w]     = src[w1];rgb[w + 1] = src[w1+1];rgb[w + 2] = src[w1+2];}rgb += width*3;src += width*4;}return;
}

转RGB的话只需要改变分量的位置就行了

        rgb[w]     = src[w1+2];rgb[w + 1] = src[w1+1];rgb[w + 2] = src[w1];

总体来说其实就是x或者A通道分量去掉重新组合成RGB。

RGB格式学习:RGBx、xRGB、RGBA、ARGB等格式转换成RGB相关推荐

  1. 海康威视IPCamera图像捕获方法:捕获实时流,将实时流解码成YV12,然后转换成RGB

    将他的MFC工程相关的代码抠出来,重组.于是实现了捕获YV12格式的视频流的功能,光有YV12还是不行的,需要将YV12转成YUV4:4:4的,然后再将YUV色度空间转换成RGB色度空间,这个过程是在 ...

  2. 颜色的整数值转换成RGB值

    最近在研究使用Python操作Excel自动化的过程中,我遇到了一个小问题.为了弄清楚Excel在设置单元格条件格式时候所用的颜色,我使用VBA录制了宏命令,但是单元格和字体的颜色都是使用整数值进行标 ...

  3. Android 将一张CMYK模式的图片转换成RGB模式的图片

    Android系统是不能够显示打印模式(CMYK)的图片的.所以要在Andorid设备下显示CMYK模式的图片我得做法是将其转换成RGB模式的图片,但是通过转换颜色丢失比较大,如果大家有好的办法欢迎指 ...

  4. 十六进制颜色码转换成RGB颜色值

    十六进制颜色码转换成RGB颜色值 相关知识点 0xFF 十六进制 如果转成二进制位:11111111 int值是32位,0的二进制: 00000000000000000000000000000000 ...

  5. 十六进制颜色码转换成RGB颜色值:

    十六进制颜色码转换成RGB颜色值:   颜色码对照表 颜色 英文代码 形象描述 十六进制 RGB LightPink 浅粉红 #FFB6C1 255,182,193 Pink 粉红 #FFC0CB 2 ...

  6. 海思AI芯片(Hi3519A/3559A)方案学习(十四)JPEG图片转换成bgr文件

    原文:https://blog.csdn.net/avideointerfaces/article/details/89931156 前言 在系列文章海思AI芯片(Hi3519A/3559A)方案学习 ...

  7. 10_OpenCV读取原始raw(raw10和raw8),转换成rgb和灰度图,并显示

    void ReadRaw8(){std::string strFilename = "raw8.raw";int nWidth = 1456;int nHeight = 1096; ...

  8. 转png格式_CAD转PNG,你知道怎样转换成高质量清晰的黑白图片吗?

    嗨,我是爱踢汪.每当我们在绘制CAD图纸的过程中,为了方便于传输查看,我们常常需要把CAD图纸转换成图片格式.其中就有JPG和PNG格式.相 较于有损压缩的JPG格式,PNG格式是可以保存为透明背景的 ...

  9. 日期格式转换成时间戳格式php,php日期转时间戳,指定日期转换成时间戳

    有朋友问php与mysql有没有办法把日期转时间戳或把指定日期转换成时间戳呢,其实这个是有并且还非常的简单,下面我来给大家介绍介绍. 一.在MySQL中完成 这种方式在MySQL查询语句中转换,优点是 ...

  10. QSV格式转换器如何将爱奇艺视频转换成MP4格式

    爱奇艺视频网站中拥有大量影视剧的版权,其官方为了保护视频的版权信息,就将已下载或已缓存视频的格式从MP4格式改成QSV格式.QSV格式文件是爱奇艺视频缓存的视频文件格式,QSV格式只能使用爱奇艺系列的 ...

最新文章

  1. Spark:group by和聚合函数使用
  2. ftp 的三种数据传输模式
  3. java 页面换行处理
  4. 模板:min-max容斥离散随机变量的几何分布(洛谷P3175:[HAOI2015]按位或)
  5. 4固定在底部_礼堂椅厂家教你如何固定座椅
  6. 【USACO1.1】Broken Necklace
  7. 观测云品牌正式亮相,携手通信院共推国内可观测性概念与技术发展!
  8. maven的Windows环境下安装配置
  9. linux中启动不了服务,Linux系统xinetd服务启动不了
  10. MATLAB 不使用科学计数法 显示坐标 及理解
  11. codeigniter CI 框架 在helper 中 使用 全局变量 方法
  12. java代码分析及分析工具
  13. 比较流行的日志分析软件
  14. ip okhttp 设置_okhttp3及httpclient中的代理设置
  15. C语言第零次作业总结
  16. 电脑安装win10系统
  17. 现在国际上发行的优秀的儿童期刊杂志有哪些
  18. HTTP/HTTPS账号密码获取
  19. IMDB影评数据集无法通过keras下载
  20. GooglePageRank排名新算法(一)

热门文章

  1. emmagee 性能工具梳理
  2. Matlab实现Monte Carlo期权定价
  3. 经典卷积网络--ResNet残差网络
  4. 小程序获取百度地图api
  5. 免费抖音视频解析网站_抖音规则解析:抖音视频为什么能火?推荐规则是什么?【揭秘】...
  6. css垂直居中怎么设?文字上下居中和图片垂直居中
  7. NPDP产品经理认证考试培训资料--XISAI
  8. 达梦数据库导出表格形式(Excel)方式
  9. 软考信息安全工程师知识总结
  10. 计算机语言异或符号,异或门的电路符号表达_XOR的电路实现