屏幕为黑色yuv值怎么设置

简介: 屏幕为黑色yuv值怎么设置

上篇文章讲了静默认的时候pcm值怎么设置,这篇讲讲屏幕是黑屏时,yuv值怎么设置。

当我们想让yuv设置为一个颜色的时候,我们往往先关注对应的rgb值,因为rgb值比较常用,三原色组成各种颜色的原理更易理解。找到对应的rgb值然后再转换为yuv值。

   白色:rgb(255,255,255)
   黑色:rgb(0,0,0)
   红色:rgb(255,0,0)
   绿色:rgb(0,255,0)
   蓝色:rgb(0,0,255)
   青色:rgb(0,255,255)
   紫色:rgb(255,0,255)


可以看到黑色时rgb值都为0。

这里举例uyvy422<—>grb互相转换公式,其他的yuv格式原理相同。

Y = 0.257R + 0.504G + 0.098B + 16

Cb= -0.148R - 0.291G + 0.439B + 128

Cr= 0.439R - 0.368G - 0.071B + 128

R = 1.164(Y-16) + 1.596*(Cr-128)

G = 1.164*(Y-16) - 0.813*(Cr-128) - 0.392*(Cb-128)

B = 1.164*(Y-16) + 2.017*(Cb-128)

注意uyvy422是packet模式在内存中是交叉存储的,如下:

u,y,v,y,u,y,v,y…

以上每个分量就像rgb一样占一个字节存储。关于yuv的planar格式和packet存储格式之前的博客有讲解。

因此想让uyvy422为黑色:

u = 128

y = 16

v = 128

for(int i = 0; i < height * width * 2; i = i + 4)
{
  char_buf[i] = 128;
  char_buf[i + 1] = 16;
  char_buf[i + 2] = 128;
  char_buf[i + 3] = 16;
}


其中height x width x 2是因为:

yuv444占height x width x 3个字节

yuv422占height x width x 2个字节

yuv420占height x width x 1.5个字节

这部分之前的博客有详细的解释。

以上实测有效。


thxchtb3wcn3k_d11fc1ff3db9431d8ad7575e9297ae48.png

相关文章
简单好用的图片取色器【可取RGB数值】
这篇文章介绍了如何使用Snipaste工具进行截图和取色,包括按下快捷键F1截图、选择图片区域、移动鼠标取色以及复制颜色值的步骤,并提供了操作界面的截图。
|
3月前
|
存储 人工智能 C++
【C++】有N种颜色的小球,开始同一种颜色小球装在同一个筐里面,颜色从1到N标号。有下面两个操作(Cab),把颜色是b的 (源码)【独一无二】
【C++】有N种颜色的小球,开始同一种颜色小球装在同一个筐里面,颜色从1到N标号。有下面两个操作(Cab),把颜色是b的 (源码)【独一无二】
|
XML 数据格式
【opencv3】滑动条调节RGB颜色阈值并输出滑动条的值
【opencv3】滑动条调节RGB颜色阈值并输出滑动条的值
|
Java
JDK的drawRect(),实际绘制范围比宽度大一个像素
JDK的drawRect(),实际绘制范围比宽度大一个像素
95 0
JDK的drawRect(),实际绘制范围比宽度大一个像素
|
定位技术
egret纹理填充模式(上下填充)
egret纹理填充模式(上下填充)
egret纹理填充模式(上下填充)
146.矩形区域的颜色填充
146.矩形区域的颜色填充
76 0
|
异构计算
【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )(一)
【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )(一)
503 0
【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )(一)
【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )(二)
【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )(二)
176 0
【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )(二)
常用颜色RGB、灰度值、取色值、透明度。
常用颜色RGB、灰度值、取色值、透明度。
634 0
RGB颜色设置错误
RGB颜色设置错误
150 0