yuv420p 转rgb计算
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yuv420p 转rgb计算相关的知识,希望对你有一定的参考价值。
参考技术A andorid 时间 compute shader链接: https://gitee.com/1392492818/compute_shaderYUV420p 格式如下
坐标计算方式:
相当于:
U和V的转换:
iOS 256 色 (VGA) 转 RGB
【中文标题】iOS 256 色 (VGA) 转 RGB【英文标题】:iOS 256 Colors (VGA) to RGB 【发布时间】:2011-01-29 10:33:38 【问题描述】:我想在 iOS 上将 VGA 颜色(256 色;8 位)转换为 RGB 颜色。
是否可以计算这个或者我必须使用颜色表(使用 CGColorSpaceCreateIndexed)。
UIColor 不支持 256 色。
谢谢:)
【问题讨论】:
我冒昧地将“256 位”更改为“256 色”。 这个问题没有任何意义。 8 位颜色空间中的 VGA 颜色是 RGB 颜色。它们由单独的红色、绿色和蓝色分量组成。最多有 256 种颜色这一事实无关紧要。您无需创建任何类型的颜色索引表或计算任何内容。 也许我应该详细说明。我正在将 DOS 游戏移植到 iOS。我得到一个 uint8 作为颜色(一个分量,8 位),需要将其转换为 RGB(三个分量)。 【参考方案1】:在某个地方,您要移植的标题应该设置了调色板。在 VGA 上,256 种颜色通过程序员先前设置的表映射,以将它们转换为 18 位 RGB 颜色(每个通道统一为 6 位)。如果您通过仿真运行原始标题,请注意对端口 0x3c6、0x3c8 和 0x3c9 的写入或通过 int 10h 调用 BIOS,其中 ax = 0x1010(设置单一颜色)或 0x1012(设置范围)。如果你有原始代码,显然要寻找调色板表的来源。
在绘图方面,您可以自己保留调色板,例如作为 256 个 CGColorRefs 的 C 样式数组,或者按照您的建议使用 CGColorSpaceCreateIndexed(忽略 Apple 的轻微文档错误;颜色表最多可以包含 256 个条目,而不是最多 255)可能带有位图上下文,只需将缓冲区传递给 CoreGraphics 并忘记它。
我希望重新映射将在 CPU 上执行,因此如果成本太高,请考虑使用 GL ES 2.x 并编写合适的像素着色器 - 您可以将实际图像上传为亮度(即单通道)纹理,加上一个 256x1 纹理,其中每个点的颜色是一个调色板条目,然后编写一个着色器,从第一个纹理中读取当前纹理坐标,并使用该值来索引第二个。
【讨论】:
以上是关于yuv420p 转rgb计算的主要内容,如果未能解决你的问题,请参考以下文章
从 YUV420P 到 RGB 的 FFMPEG Api 转换产生奇怪的输出