问题标签 [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.
image-processing - Image Magick:如何将 png 文件转换为原始 NV21 和 NV12
是否可以使用 Image Magick 将 png 图像转换为原始 NV21 或 NV12 格式?
我执行以下操作:
根据 rawpixels.net 转换后的图像是 YV12
我想将图片转换为 NV21 以供参考以测试我的转换器。
谢谢!
python - 如何使用 NumPy 将 sRGB 转换为 NV12 格式?
NV12格式定义了具有 420 次采样的 YUV 颜色空间的特定颜色通道排序。
NV12 格式主要用于视频编码/解码管道。
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:
NV12 元素排序示例:
YYYYYY
YYYYYY
UVUVUV
RGB 到 NV12 的转换可以通过以下阶段来描述:
- 颜色空间转换 - 从 sRGB 转换为 YUV 颜色空间。
- 色度下采样 - 在每个轴上将 U、V 通道缩小 x2 倍(从 YUV444 转换为 YUV420)。
- 色度元素交错 - 将 U、V 元素排列为 U、V、U、V...
下图说明了应用 6x6 像素图像大小的转换阶段:
我们如何使用 NumPy 将 sRGB 转换为 NV12?
注意:
问题是指演示转换过程的 Python 实现(帖子不适用于 OpenCV 实现等现有功能)。
directx - 一次将 NV12 复制到 ID3D11Texture2D
我有一个产生 NV12 yuv 帧的解码器。我想做的是使用单个 memcpy 将该帧复制到 ID3D11Texture2D 纹理。因为 D3D11_MAPPED_SUBRESOURCE 的 RowPitch 与我的 NV12 帧不同,所以我必须逐行复制整个 yuv,这非常昂贵。有一个更好的方法吗?
我试图找到有关此主题的任何信息,但到目前为止没有任何运气。
cuda - Nvidia NVDEC - 将解码帧复制到 D3D11 NV12 纹理
我正在尝试将 NV12 NVDEC 解码缓冲区直接复制到 NV12 d3d11 纹理中。到目前为止没有运气。我设法做的是使用 2 个 d3d11 纹理(亮度 + 色度)、 2 cuGraphicsMapResources
、 2 cuGraphicsSubResourceGetMappedArray
、 2CUDA_MEMCPY2D
和一个像素着色器来合并所有的双镜头副本……无法执行单镜头副本,也没有响应到目前为止,来自 NVidia 论坛。
我发现这个老问题面临一个非常相似的问题,也没有解决方案。
yuv - 如何使用 Direct3D 12 将单个纹理从 RGBA 转换为 NV12?
github上有一个没用的D3D12示例代码项目 https://github.com/microsoft/D3D12TranslationLayer
停留在 CreateVideoProcessor 的步骤
如何通过directx12将rgba纹理转换为nv12纹理?
(平台为Windows 1909)
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 的大小:
任何有关此的帮助或意见将不胜感激。
谢谢
android - 如何在android中将位图转换为nv21字节[]数组
我已经尝试过这种方法进行转换,但结果图像已损坏
image-processing - 将 RAW 图像转换为 BMP 格式
我收到了一个.raw
帧格式(这里是一个示例),其中包含一个帧的原始像素值。有人告诉我,我可以FFMpeg
使用以下命令将其转换为图像(.bmp 或 .png)。但是,在尝试时,它不起作用。
问题是什么?有什么方法可以避免使用dd
并纯粹从FFmpeg
.
这是错误:
如果我直接使用 ffmpeg:
我会收到这个错误: