当前位置: 首页 > article >正文

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的重载图像的功能。


http://www.kler.cn/news/357366.html

相关文章:

  • Spring Boot启动原理:餐厅运营的比喻
  • 克里金插值(Kriging interpolation)
  • 2024.10.15 sql
  • LabVIEW示波器通信及应用
  • Docker-Harbor概述及构建
  • 2024最新Navicat Pro 中文版本图文教程
  • Android OpenGL高度图
  • Vue3+vite项目中利用CDN来引入依赖,从而降低app.js的体积
  • TIM定时器(标准库)
  • electron-vite_9win软件名称和安装包名称设置?
  • Goland 搭建Gin脚手架
  • 基于Javaweb的医院挂号预约管理系统
  • kafkamanager安装
  • 什么是好的单元测试 - 单元测试的哲学
  • 【全国产化加固计算机】飞腾D2000/FT2000,飞腾芯引领自主可控新时代!
  • RHCSA linux 磁盘分区,格式化,逻辑卷,vdo,自动挂载
  • HttpURLConnection构造请求体传文件
  • 第T5周:Tensorflow实现运动鞋品牌识别
  • bat脚本banenr
  • 【C++】STL--list