自学内容网 自学内容网

FFmpeg 4.3 音视频-多路H265监控录放C++开发四 :RGB颜色

一  RGB 的意义?

为什么要从RGB 开始讲起呢?

因为最终传输到显卡显示器的颜色都是RGB

即使能处理YUV的API,本质上也是帮你做了从 YUV 到 RGB的转换。

RGB888 表示 R 占8bit,G 占8bit,B 占8bit,也就是每一个都占8比特(一个字节),那么也就说用3个字节就可以表示 RGB888。

用unsigned char 表示 1个字节

我们知道一个字节有8位, 就是说表达的10进制 为 0--255

00000000   ------   11111111

因此也可以看到一般表示法有 255 255 255 或者 FF FF FF

那么这个一个 RGB888 代表的是啥呢?实际上就是代表的屏幕上的一个像素点。

例如 1280x720 的图片,在不考虑 字节对齐的 概念下,

就有 720 行,每一行有1280个点,每一个点也叫一个像素,都对应 一个 RGB888。

也有RGBA8888 的形式,实际上多了个一A,也占用8bit(一个字节),是透明度的意思,这个一般在用到 两张图片的叠加的时候,这个透明度A会用到。

二  写一个RGB图片的代码。

我们来看一个 6x3 的RGB888图片在内存中应该是什么样子的?

我们知道每一个像素点都是一个RGB888,那么一个像素点应该是8个bit的R + 8个bit的G+8个bit的B 组成的,也可以说成是 1byte的R + 1byte的G + 1byte的B组成 

如下是一个像素点,

那么每一行就是有 三个这样的像素点

那么我们有6行,应该就是下面这样了

实际上在内存中上述图片都是顺序排列的,没有列的概念,我们画成上面的样子,只是为了方便理解。

我们使用QT 上显示这个自己想画的图片。

要使用的图片为 QTEvent的重载图像的功能。


原文地址:https://blog.csdn.net/hunandede/article/details/143081484

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!