屏幕为黑色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

相关文章
|
4月前
设置背景图像平铺和位置
设置背景图像平铺和位置。
42 5
简单好用的图片取色器【可取RGB数值】
这篇文章介绍了如何使用Snipaste工具进行截图和取色,包括按下快捷键F1截图、选择图片区域、移动鼠标取色以及复制颜色值的步骤,并提供了操作界面的截图。
|
8月前
LabVIEW背景颜色设为和其他程序或图像中一样
LabVIEW背景颜色设为和其他程序或图像中一样
63 2
|
XML 数据格式
【opencv3】滑动条调节RGB颜色阈值并输出滑动条的值
【opencv3】滑动条调节RGB颜色阈值并输出滑动条的值
|
定位技术
egret纹理填充模式(上下填充)
egret纹理填充模式(上下填充)
egret纹理填充模式(上下填充)
RGB颜色设置错误
RGB颜色设置错误
159 0
C# 获取当前屏幕的宽高和位置
原文:C# 获取当前屏幕的宽高和位置 上一篇博客《C# 获取当前屏幕DPI》,介绍了如何获取当前屏幕的DPI设置 本章主要介绍如何获取当前窗口所在屏幕的信息 当前屏幕信息 如果当前是单屏幕,可以直接获取主屏幕 var primaryScreen = Screen.
1308 0
获取 UIElement 相对于屏幕原点所占用的矩形区域
原文:获取 UIElement 相对于屏幕原点所占用的矩形区域 // 演示如何获...
914 0
|
Web App开发 前端开发

热门文章

最新文章