问题标签 [rgb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
colors - 将灰度值转换为 RGB 表示?
如何将灰度值 (0-255) 转换为 RGB 值/表示?它用于 SVG 图像,它似乎没有灰度支持,只有 RGB ......
注意:这不是 RGB -> 灰度,已在另一个问题中回答,例如Converting RGB to grayscale/intensity)
algorithm - 颜色生成功能
让我们考虑以下场景:一个函数可以生成从白色到红色、从白色到蓝色、从白色到粉色、从白色到橙色等的代码颜色。
颜色代码采用 RGB 格式,值从 0 到 255。
有任何想法吗?你能给我这个算法的伪代码或链接吗?
colors - 如何获取给定 PMS 值的 CMYK 值?
我有一个 PMS(Pantone 匹配系统)颜色值。我需要为该 PMS 值找到相应的 CMYK(http://en.wikipedia.org/wiki/CMYK)或 RGB 值。
任何引用转换或颜色图表的链接都会有所帮助。
干杯
cocoa - 如何在 Cocoa Touch 中将 RGB 转换为 HSV?
我想使用 HSV 而不是 RGB 设置标签的背景颜色。如何将其实现到代码中?
代码:
c# - 如何计算位图的平均 rgb 颜色值
在我的 C# (3.5) 应用程序中,我需要获取位图的红色、绿色和蓝色通道的平均颜色值。最好不使用外部库。这可以做到吗?如果是这样,怎么做?提前致谢。
试图让事情更精确一点:位图中的每个像素都有一定的 RGB 颜色值。我想获得图像中所有像素的平均 RGB 值。
cocoa - 如何在 Cocoa OpenGL 程序中显示原始 YUV 帧
我被分配了编写一个程序的任务,该程序采用示例原始 YUV 文件并将其显示在 Cocoa OpenGL 程序中。
我是我工作的实习生,我几乎不知道如何开始。我一直在阅读有关 YUV 的维基百科和文章,但我找不到任何关于如何打开原始 YUV 文件、提取数据并将其转换为 RGB 并在视图窗口中显示的好的源代码。
本质上,我需要任务的以下方面的帮助 - 如何从示例 YUV 文件中提取 YUV 数据 - 如何将 YUV 数据转换为 RGB 颜色空间 - 如何在 OpenGL 中显示 RGB 颜色空间。(这个我想我可以随着时间的推移弄清楚,但我真的需要前两点的帮助)
请告诉我要使用的课程,或者指出我可以了解 YUV 图形/视频显示的地方
c# - 如何在 C# 中读取和修改图像的颜色空间
我正在从 jpg 文件加载位图。如果图像不是 24 位 RGB,我想转换它。转换应该相当快。我正在加载的图像非常大(9000*9000 像素,压缩大小为 40-50MB)。如何才能做到这一点?
顺便说一句:如果可能的话,我不想使用任何外部库。但是,如果您知道执行最常见的成像任务的开源实用程序类,我会很高兴听到它。提前致谢。
objective-c - 在 OpenGL 中显示 YUV
我无法显示 NV12 格式的原始 YUV 文件。
我可以显示一个选定的框架,但是,它仍然主要是黑白的,带有一定的粉红色和绿色。
这是我的输出的样子
无论如何,这就是我的程序的工作方式。(这是在 cocoa/objective-c 中完成的,但我需要您对程序算法而不是语法的专家建议。)
在程序执行之前,YUV 文件存储在名为“test.yuv”的二进制文件中。该文件为 NV12 格式,这意味着首先存储 Y 计划,然后隔行扫描 UV 计划。我的文件提取没有问题,因为我对其进行了很多测试。
在启动期间,我创建了一个查找表,它将二进制/8 位/一个字节/字符转换为受尊重的 Y、U、V 浮点值
对于 Y 平面,这是我的代码
U 平面查找表
和 V 查找表
在此之后,我提取 Y & UV 计划并将它们存储到两个缓冲区中,yBuffer 和 uvBuffer
此时,我尝试转换 YUV 数据并将其存储到一个名为“frameImage”的 RGB 缓冲区数组中
然后我尝试在OpenGL中绘制图像
所以基本上这是我的程序。基本上我读取二进制 YUV 文件,将所有数据存储在 char 数组缓冲区中。然后我将这些值转换为他们尊重的 YUV 浮点值。
这就是我认为可能出现错误的地方:在 Y 查找表中,我将 Y 平面标准化为 [0,1],在 U 平面中,我将 [-0.435,0.436] 之间的值标准化,在 V 平面中,我标准化了它在 [-0.615,0.615] 之间。我这样做是因为这些是根据维基百科的 YUV 值范围。
YUV 到 RGB 的公式与维基百科的公式相同。我还尝试了其他各种公式,这是唯一给出框架粗略外观的公式。任何人都可能会猜测为什么我的程序没有正确显示 YUV 帧数据。我认为这与我的标准化技术有关,但对我来说似乎没问题。
我做了很多测试,我 100% 确定错误是由查找表引起的。我认为我的设置公式不正确。
给所有正在阅读本文的人的说明。在最长的时间里,我的框架无法正确显示,因为我无法正确提取框架数据。
当我第一次开始编程时,我的印象是在一个 30 帧的剪辑中,所有 30 个 Y 平面数据首先写入数据文件,然后是 UV 平面数据。
我通过反复试验发现,对于 YUV 数据文件,特别是 NV12,数据文件以以下方式存储
Y(1) UV(1) Y(2) UV(2) ... ...
@nschmidt
我将代码更改为您的建议
这就是我得到的结果
这是控制台的打印行。我打印出正在转换并存储在 frameImage 数组中的 Y、U、V 和 RGB 值的值
YUV:[0.658824,-0.022227,-0.045824] RGBFinal:[0.606593,0.694201,0.613655]
YUV:[0.643137,-0.022227,-0.045824] RGBFinal:[0.590906,0.678514,0.597969]
YUV:[0.607843,-0.022227,-0.045824] RGBFinal:[0.555612,0.643220,0.562675]
YUV:[0.592157,-0.022227,-0.045824] RGBFinal:[0.539926,0.627534,0.546988]
YUV:[0.643137,0.025647,0.151941] RGBFinal:[0.816324,0.544799,0.695255]
YUV:[0.662745,0.025647,0.151941] RGBFinal:[0.835932,0.564406,0.714863]
YUV:[0.690196,0.025647,0.151941] RGBFinal:[0.863383,0.591857,0.742314]
2009 年 7 月 13 日更新
在nschmidt的推荐下,问题终于得到解决。事实证明,我的 YUV 文件实际上是 YUV 4:1:1 格式。我最初被告知它是 YUV NV12 格式。不管怎样,我想和你分享我的结果。
这是输出
我的解码代码如下
本质上,我使用 NSData 进行原始文件提取。存储在 char 数组缓冲区中。对于 YUV 到 RGB 的转换,我使用了上面的公式,然后,我将值限制为 [0:255]。然后我在 OpenGL 中使用 2DTexture 进行显示。
因此,如果您将来要将 YUV 转换为 RGB,请使用上面的公式。如果使用前面帖子中的 YUV 到 RGB 转换公式,那么您需要在 GL_Float 中显示纹理,因为 RGB 的值被限制在 [0:1] 之间
flash - 阿尔法 + RGB -> ARGB?
在 as3 中,是否有将 RGB 颜色(例如 0xFF0000)和 alpha 值(例如 .5)转换为 32 位 ARGB 值的实用程序或函数?
从 ARGB 到 RGB + alpha?
一些解释:位图数据可以在其构造函数中采用 ARGB 值,但在精灵中填充形状通常采用 RGB 值。我希望上述实用程序确保颜色匹配。
css - 在 CSS 中对 RGB 颜色值使用十六进制而不是十进制有什么好的理由吗?
rgb(255,255,255)
表示法自 CSS1 起就可用。但#ffffff
似乎更受欢迎。
显然它稍微紧凑一些。我知道十六进制与底层字节更密切相关,并且理解对这些值进行算术运算会有优势,但这不是你要用 CSS 做的事情。
颜色值往往由在其他任何地方都不会遇到十六进制表示法的设计师(比如我自己)发起,并且更熟悉十进制表示法,这是在他们使用的应用程序中指定颜色的主要方式——事实上我有遇到了很多没有意识到给定十六进制值如何分解为 RGB 分量并假设它根本不直接与颜色相关的人,例如 Pantone 颜色系统参考(例如 PMS432)。
那么,有什么理由不使用十进制?