小编Rot*_*tem的帖子

YUV NV21转换为RGB的困惑

根据http://developer.android.com/reference/android/graphics/ImageFormat.html#NV21,NV21是默认使用的格式.

网上有很多关于YUV NV21到RGB转换的代码.但是,当我查看代码时,我怀疑代码的正确性.

第一个组分V应首先出现,然后是第一个组分U.

根据http://wiki.videolan.org/YUV#NV21,NV21 is like NV12, but with U and V order reversed: it starts with V.但是,当我完成代码实现时

[R应该是最显著位置 的根据实施int argbColor.java,R假设是在最显著位置.但是,我经历了以下代码实现

我想知道,他们是否犯了常见错误,或者我忽略了什么?

目前,我的实施如下.

public static void YUV_NV21_TO_RGB(int[] argb, byte[] yuv, int width, int height) {
    final int frameSize = width * height;

    final int ii = 0;
    final int ij = 0;
    final int …
Run Code Online (Sandbox Code Playgroud)

android nv12-nv21

32
推荐指数
1
解决办法
3万
查看次数

图像格式化内存中的NV12存储

我完全理解所讨论的NV12格式的大小

NV12格式和UV平面

现在我正在阅读有关以这种格式存储UV平面的两个来源:一个是https://msdn.microsoft.com/en-us/library/windows/desktop/dd206750(v=vs.85).aspx

NV12

所有Y样本首先在内存中显示为具有偶数行的无符号字符值数组.Y平面后面紧跟着一组无符号字符值,其中包含打包的U(Cb)和V(Cr)样本.当组合的UV数组作为little-endian WORD值的数组寻址时,LSB包含U值,并且MSB包含V值.NV12是DirectX VA的首选4:2:0像素格式.预计这将是支持4:2:0视频的DirectX VA加速器的中期要求.下图显示了Y平面和包含U和V样本的数组.

我的理解是:在UV平面中,每个U和V都以单字节存储.

当我从维基百科阅读这篇文章时:https: //wiki.videolan.org/YUV#NV12

它说:

NV12

与I420相关,NV12具有一个亮度"亮度"平面Y和一个具有U和V值交错的平面.在NV12中,色度平面(蓝色和红色)在水平和垂直维度上进行二次采样,系数为2.对于2x2像素组,您有4个Y样本和1个U和1个样本.将NV12视为I420与U和V平面交错是有帮助的.这是NV12的图形表示.每个字母代表一位:对于1 NV12像素:YYYYYYYY UVUV对于2像素NV12帧:YYYYYYYYYYYYYYY UVUVUVUV对于50像素NV12帧:Y*8*50(UV)*2*50对于n像素NV12帧:Y*8*n(UV)*2*n

我在这里理解的是:每个U和V在每个字节中逐位交错.因此,UV平面的每个字节将包含4U位和4V位交错.

任何人都可以澄清我的怀疑吗?

image-processing yuv image-formats nv12-nv21

10
推荐指数
1
解决办法
2万
查看次数

使用Matlab检测交叉中心点

替代文字

您好,我有一张如上图所示的图片.我可以检测十字的中心点并使用Matlab输出结果吗?谢谢.

matlab image-processing computer-vision

9
推荐指数
1
解决办法
8111
查看次数

如何使用 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 位。 在帖子的上下文中,YUV 元素处于“有限范围”标准:Y 范围为 [16, 235],U,V 范围为 [16, 240]。 uint8

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

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

NV12 元件订购示例:
YYYYYY
YYYYYY …

python numpy image-processing video-processing nv12-nv21

8
推荐指数
1
解决办法
6838
查看次数

NV21 格式和奇数图像尺寸

我在 Android 中使用 NV21 图像已经有一段时间了,我一直在跟踪一个错误,该错误可能是由 NV21 图像中的不正确索引字节引起的。

这个问题的答案中的图像很好地概述了 Y、U 和 V 字节在图像缓冲区中的位置。不确定是否允许,但我将其嵌入如下:

YUV420SP NV21 格式

  1. 当图像具有奇数尺寸(如奇偶校验)时会发生什么?这种格式甚至可能吗?
  2. 我们在某处有这种格式的官方规范吗?

android image yuv android-camera nv12-nv21

6
推荐指数
1
解决办法
2523
查看次数

NV12格式和UV平面

我对NV12格式有点困惑.我正在查看页面以了解格式.我目前理解的是,如果你有一个640 x 480diminsion 的图像或视频,那么Y平面将具有 640 x 480字节,U和V都具有640/2 x 480/2.这并不意味着U平面640/2 x 480/2和V平面640/2 x 480/2都只有640/2 x 480/2字节.所以out缓冲区数组中的总字节数将是.2乘以(640/2) * (480/2)因为uv平面将占用两个字节.

byte [] myArray new byte[(640 * 480) + (2 * (640/2) * (480/2)) ];
Run Code Online (Sandbox Code Playgroud)

所以问题是我以正确的方式理解它?我是以指定NV12格式的格式制作字节数组的.

c# yuv color-space libyuv nv12-nv21

5
推荐指数
1
解决办法
7384
查看次数

如何使用IPP将RGB转换为NV12色彩空间

像Intel®MediaSDK这样的视频编码器需要NV12视频输入格式.

NV12格式是YUV 4:2:0格式,在存储器中排序,首先是Y平面,然后是交错UV平面中的打包色度样本.

例:
YYYYYY
YYYYYY
UVUVUV

在此输入图像描述

RGB颜色格式,指像素级RGB(每像素字节,低字节为红色):
RGBRGBRGBRGBRGB
RGBRGBRGBRGBRGB

在此输入图像描述

我做了一些网络研究,发现对于NV12,YUV被定义为YCbCr色彩空间.目前至少有两种可能的YCbCr格式适用于NV12:

我的问题是:是否有将IP色彩空间转换为NV12的IPP功能?

c rgb yuv intel-ipp nv12-nv21

3
推荐指数
1
解决办法
4481
查看次数