将 YUY2 转换为 YV12

2024-01-07

我几乎可以肯定,这比我想象的要简单得多,但我在互联网上搜索的时间比我愿意承认的要长得多,试图找出冰箱如何转换这两种格式。我能够从无符号字节流(无符号字符)中提取 Y0、Cb、Y1、Cr 数据,但我不知道这些字节是如何排列的YV12 http://fourcc.org/yuv.php#YV12- 该文档是否暗示各个值实际上包含在不同的行中?

我一整天都在搜索“c++ 将 YUY2 转换为 YV12”之类的内容,但完全没有找到任何教程或代码示例。我认为这会有某种形式的文档可供我使用,但关于这个特定主题的信息似乎很少。


看起来像YUY2 上的链接条目 http://fourcc.org/yuv.php#YUY2维基百科关于 YV12 的文章 http://en.wikipedia.org/wiki/YUV#Y.27UV420p_.28and_Y.27V12_or_YV12.29_to_RGB888_conversion很清楚地表明了这一点:

  • YUY2 将每两个相邻的水平像素存储为四个字节,[Y1, U, Y2, V].

  • YV12存储整个M × N连续数组中的帧M*N + 2 * (M/2 * N/2)字节。让我们调用数组byte frame[M * N * 3 / 2]。我们有:

    • frame[i] for i in [0, M * N)Y- 像素值。
    • frame[j] for j in [M * N, M * N * 5/4)V- 每个 2 × 2 像素图块的值。
    • frame[j] for k in [M * N * 5/4, M * N * 6/4)U- 每个 2 × 2 像素图块的值。

因此,当您从 YUY2 转换为 YV12 时,您必须将数量减半U- and V-数据,可能通过取两个相邻行的平均值。

Example:

byte YUY2Source[M * N * 2] = /* source frame */;
byte YV12Dest[M * N * 3/2];

for (unsigned int i = 0; i != M * N; ++i)
{
    YV12Dest[i] = YUY2Source[2 * i];
}

for (unsigned int j = 0; j != M * N / 4; ++j)
{
    YV12Dest[M * N + j]       = ( YUY2Source[N*(j / N/2    ) + 4 * j + 3]
                                + YUY2Source[N*(j / N/2 + 1) + 4 * j + 3] ) / 2;

    YV12Dest[M * N * 5/4 + j] = ( YUY2Source[N*(j / N/2    ) + 4 * j + 1]
                                + YUY2Source[N*(j / N/2 + 1) + 4 * j + 1] ) / 2;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 YUY2 转换为 YV12 的相关文章

随机推荐

  • .obj 中已定义的函数

    据我了解 此错误是由于当您有多个文件 包含同一文件 时未正确使用标头防护而引起的 就我而言 这是导致错误的包含树 File A includes Z which contains the functions I need File B in
  • Python从pdf中提取图像序列

    我试图使用 PyMuPDF fitz 从 pdf 中提取图像 我的 pdf 页面中有多个图像 我在保存图像时保持正确的序列号 我发现提取的图像不遵循正确的顺序 有时是从底部开始提取 有时是从顶部开始提取 等等 有没有办法修改我的代码 以便提
  • 具有代理键的表是否需要对自然键进行唯一约束才能处于 1NF 状态?

    实用主义者赢得了代理键与自然主键的争论 支持代理键 在我自己的工作中 我总是毫不犹豫地使用 SQL Server 标识列 但我突然想到 对于处于第一范式的表 我应该能够识别自然键并使用唯一约束强制执行它 我无法对数据库中的所有表执行此操作
  • 查找列表中多个项目的索引

    我有一个清单 myList what is your name Hi how are you What about you How about a coffee How are you 现在我想搜索所有出现的索引 How and what
  • Encryption Crypt - 尝试以与 Perl 相同的方式在 PHP 中工作

    我已经用 Perl 编写了加密功能 并且尝试在 PHP 中以同样的方式工作 In PERL usr bin perl use strict use warnings use Crypt CBC use Crypt Rijndael my c
  • IllegalStateException:在 glassfish 中创建 oracle 连接池时 getOutputStream()

    我正在尝试在我的 glassfish 服务器中创建一个 oracle 连接池 我有一个 glassfish 安装 默认与 netbeans 捆绑在一起 删除 netbeans 后 我下载了它 现在有一个单独的 glassfish 文件夹 在
  • 在运行时在 Airflow 操作符中创建和使用连接[重复]

    这个问题在这里已经有答案了 注意 这不是重复的 使用airflow在运行时导出环境变量 https stackoverflow com questions 51312425 export environment variables at r
  • Material-ui 网格内的中心组件

    我想使用相同的卡片并使它们居中对齐 我搜索并尝试了一些解决方案 但所有这些解决方案都仅对齐组件网格 而不是组件内容本身 我需要它们与边界和自身的距离相等 我正在使用这段代码 https codesandbox io embed 32o8j4
  • 通用链接会访问我的服务器吗?

    我已经使用后端的别名子域和类似方案在我的 iOS 应用程序上设置了通用链接sudomain mydomain com 我希望未安装该应用程序的用户能够重定向到我们在 App Store 中的页面 而不是访问我们服务器上一些不存在的端点 我们
  • TensorFlow或Theano:他们如何知道基于神经网络图的损失函数导数?

    在 TensorFlow 或 Theano 中 您只需告诉库您的神经网络如何 以及前馈应如何运行 例如 在 TensorFlow 中 您可以编写 with graph as default X tf constant X y tf cons
  • 关于 Cygwin[Linux in Windows] 的一些问题(套接字、线程、其他编程和 shell 问题)

    我有一些关于 cygwin 的问题 我可以使用 Cygwin 开发基于套接字的代码吗 CYGWIN 有吗read and write 与文件描述符一起使用的函数 我可以在 Cygwin 中使用 Pthread 库吗 在 Cygwin 中编译
  • 使用列名称更改 ggplot2 (R) 的颜色

    我有一个数据框 见下文 我想更改 ggplot2 中绘图的颜色 以便所有 A 为红色 B 为蓝色 C 为黑色 D 为黄色 myDF label A B C D lab1 0 69 0 65 0 73 0 71 lab2 0 43 0 41
  • 如何使用自定义 OpenSSL 编译 Python 3.4?

    我在非标准位置安装了自己的 OpenSSL my path为了这个例子 当我根据源代码编译它时 我希望 Python 3 4 能够针对它进行构建 我尝试的是这个 目录缩写 CPPFLAGS I my path include I my pa
  • 使用 SQL 查询选择连续数字

    这是剧院座位预订计划 Seat No Status 1 Booked 2 Available 3 Available 4 Available 5 Available 6 Available 7 Booked 8 Available 9 Av
  • C++虚函数被隐藏

    我在 C 继承方面遇到问题 我有一个类层次结构 class A public virtual void onFoo virtual void onFoo int i class B public A public virtual void
  • 在 Play 2.5 HTML 模板中自动注入 WebJarAssets?

    在我的 Play HTML 模板中custom模块 我有以下代码行 这参考了一个WebJarAssets类中的core模块看起来像这样 package controllers core import javax inject import
  • 为java http客户端编写Mock类

    我正在尝试为我的 HTTP 客户端编写单元测试用例 并希望使用 mockito 来模拟从服务器收到的响应 public HttpResponse postRequest String uri String body throws IOExc
  • 如何解析日期时间字符串以支持 24 小时计时?

    我正在尝试使用 DateTime TryParseExact 如下所示 DateTime modifiedSinceDateTime var succeeded DateTime TryParseExact modifiedSince yy
  • 图中循环中边的最大权重

    如果图中不属于 MST 的边的权重减少 我正在尝试修改最小生成树 我在 stackoverflow 上读到 首先将边连接到 MST 现在MST中正好有一个循环 并且根据循环属性 循环中权重最大的边可以从MST中删除吗 如何找到该循环中的最大
  • 将 YUY2 转换为 YV12

    我几乎可以肯定 这比我想象的要简单得多 但我在互联网上搜索的时间比我愿意承认的要长得多 试图找出冰箱如何转换这两种格式 我能够从无符号字节流 无符号字符 中提取 Y0 Cb Y1 Cr 数据 但我不知道这些字节是如何排列的YV12 http