问题标签 [nv12-nv21]

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.

0 投票
0 回答
982 浏览

image-processing - Image Magick:如何将 png 文件转换为原始 NV21 和 NV12

是否可以使用 Image Magick 将 png 图像转换为原始 NV21 或 NV12 格式?

我执行以下操作:

根据 rawpixels.net 转换后的图像是 YV12

我想将图片转换为 NV21 以供参考以测试我的转换器。

谢谢!

0 投票
1 回答
3755 浏览

python - 如何使用 NumPy 将 sRGB 转换为 NV12 格式?

NV12格式定义了具有 420 次采样的 YUV 颜色空间的特定颜色通道排序。
NV12 格式主要用于视频编码/解码管道。

NV12 的 libyuv 描述

NV12 是一种双平面格式,有一个全尺寸的 Y 平面,后跟一个带有编织 U 和 V 值的单一色度平面。NV21 相同,但具有编织的 V 和 U 值。NV12 中的 12 是指每像素 12 位。NV12 具有半宽半高色度通道,因此是 420 次采样。

在 NV12 的上下文中,YUV 格式主要被称为YCbCr颜色空间。
NV12 元素是每个元素 8 位(uint8类型)。
在这篇文章的上下文中,YUV 元素处于“有限范围”标准中:Y 范围是 [16, 235],U,V 范围是 [16, 240]。

sRGB(标准红绿蓝)是 PC 系统使用的标准色彩空间。
在这篇文章的上下文中,sRGB颜色分量范围是 [0, 255](uint8类型)。
RGB 元素排序与帖子无关(假设 3 个颜色平面)。

目前至少有 2 种可能的 YCbCr 格式应用 NV12:

  • BT.601 - 应用标清电视。
  • BT.709 - 适用于高清电视。

NV12 元素排序示例:
YYYYYY
YYYYYY
UVUVUV

NV12

RGB 到 NV12 的转换可以通过以下阶段来描述:

  • 颜色空间转换 - 从 sRGB 转换为 YUV 颜色空间。
  • 色度下采样 - 在每个轴上将 U、V 通道缩小 x2 倍(从 YUV444 转换为 YUV420)。
  • 色度元素交错 - 将 U、V 元素排列为 U、V、U、V...

下图说明了应用 6x6 像素图像大小的转换阶段:

RGB转NV12

我们如何使用 NumPy 将 sRGB 转换为 NV12?

注意:
问题是指演示转换过程的 Python 实现(帖子不适用于 OpenCV 实现等现有功能)。

0 投票
0 回答
321 浏览

directx - 一次将 NV12 复制到 ID3D11Texture2D

我有一个产生 NV12 yuv 帧的解码器。我想做的是使用单个 memcpy 将该帧复制到 ID3D11Texture2D 纹理。因为 D3D11_MAPPED_SUBRESOURCE 的 RowPitch 与我的 NV12 帧不同,所以我必须逐行复制整个 yuv,这非常昂贵。有一个更好的方法吗?

我试图找到有关此主题的任何信息,但到目前为止没有任何运气。

0 投票
1 回答
104 浏览

image - 如何在 NV12 格式图像上进行变形仿射

我需要将翘曲仿射模型应用于 NV12 图像。

这里是 NV12 的格式,Y 和 Cb Cr 是分开的。Cb Cr 是交错的。

在此处输入图像描述

模型看起来像

[a11,a12,xt

a21,a22,yt]

a** 是旋转,xt yt 是狗屎。

该模型适用于 Y 平面。

由于 Cb Cr 是交错的,我认为我不能直接将相同的模型应用于 CB CR(交错)。

我的问题是如何将正确的翘曲仿射应用于 Cb Cr 并输出正确的图像(彩色)。

0 投票
2 回答
734 浏览

cuda - Nvidia NVDEC - 将解码帧复制到 D3D11 NV12 纹理

我正在尝试将 NV12 NVDEC 解码缓冲区直接复制到 NV12 d3d11 纹理中。到目前为止没有运气。我设法做的是使用 2 个 d3d11 纹理(亮度 + 色度)、 2 cuGraphicsMapResources、 2 cuGraphicsSubResourceGetMappedArray、 2CUDA_MEMCPY2D和一个像素着色器来合并所有的双镜头副本……无法执行单镜头副本,也没有响应到目前为止,来自 NVidia 论坛。

我发现这个老问题面临一个非常相似的问题,也没有解决方案。

0 投票
0 回答
312 浏览

yuv - 如何使用 Direct3D 12 将单个纹理从 RGBA 转换为 NV12?

github上有一个没用的D3D12示例代码项目 https://github.com/microsoft/D3D12TranslationLayer

停留在 CreateVideoProcessor 的步骤

如何通过directx12将rgba纹理转换为nv12纹理?

(平台为Windows 1909)

0 投票
1 回答
388 浏览

c++ - 分离视频帧 C++ 的 Y 和 UV

我在用 C++ 编写的 gstreamer 元素的GstVideoFrame结构中接收视频帧。

帧为 YUV420 NV12 格式

在这个 gstreamer 元素中,我试图将 y-frame 和 uv-frame 复制到单独的缓冲区中。

根据videolan.org,YUV420 NV12 数据在传入帧缓冲区中存储如下:(从网站复制的信息)

但我似乎无法计算缓冲区中 y-data 和 uv-data 的偏移量。


Update_1:我有框架的高度和宽度来计算 y-data 和 uv-data 的大小:
任何有关此的帮助或意见将不胜感激。

谢谢

0 投票
1 回答
265 浏览

android - 如何在android中将位图转换为nv21字节[]数组

我已经尝试过这种方法进行转换,但结果图像已损坏

0 投票
1 回答
143 浏览

opengl-es - nv12 到 rgb opengl 渲染问题

我正在尝试在 C++ 中将相机 nv12 缓冲区渲染到 OpenGL ES 表面,这是输出。 在此处输入图像描述

让我们看看我的着色器:

这是代码,首先我创建一个带有 NULL 数据的 cameraTexture 然后每 10 毫秒刷新一次显示

我认为我必须通过另一个带有 UV 缓冲区的缓冲区,但我知道缓冲区 Y 和 UV 是相同的。

请有人告诉我实现这一目标的正确方法是什么?

谢谢你的帮助。

0 投票
1 回答
588 浏览

image-processing - 将 RAW 图像转换为 BMP 格式

我收到了一个.raw帧格式(这里是一个示例),其中包含一个帧的原始像素值。有人告诉我,我可以FFMpeg使用以下命令将其转换为图像(.bmp 或 .png)。但是,在尝试时,它不起作用。

问题是什么?有什么方法可以避免使用dd并纯粹从FFmpeg.

这是错误:

如果我直接使用 ffmpeg:

我会收到这个错误: