yuv数据格式

知识点:

YUV格式

知识分类:

媒体芯片中的数据格式

知识描述:

1、基本概念

YUV是指亮度参量和色度参量分开表示的像素格式,其中“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
与RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样能够显示完整的图像,只不过是黑白的,这样的设计很好的解决了彩色电视与黑白电视兼容的问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,YUV通过一些压缩手段,在用YUV方式传输时,占用的频带就减小了很多。
有的地方还会用YCbCr或者YPbPr来表示,其实概念是一样的。在DVD中,色度信号被存储成Cb和Cr(C代表颜色,b代表蓝色,r代表红色)。

2、YUV的采样方式

YUV码流的存储格式与其采样方式有密切的关系,主流的采样方式有三种:YUV4:4:4、YUV4:2:2、YUV4:2:0。
下面三个图黑点表示采样像素点的Y分量,空心圆表示采样像素点的UV分量。
在这里插入图片描述
4:4:4 表示不降低色度(UV)通道的采样率。每个 Y 分量对应一组 UV 分量。
4:2:2 表示 2:1 水平下采样,没有垂直下采样。每两个 Y 分量共享一组 UV 分量。
4:2:0 表示 2:1 水平下采样,同时 2:1 垂直下采样。每四个 Y 分量共享一组 UV 分量。

参考博文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将海思的YVU数据格式转换为YUV数据格式,你可以使用以下代码片段: ```cpp // 定义YVU数据格式的宽度和高度 int width = 640; // 图像宽度 int height = 480; // 图像高度 // 定义YVU数据格式中Y、V、U分量的起始地址 HI_U8* yData = buffer; // Y分量起始地址 HI_U8* vData = yData + width * height; // V分量起始地址 HI_U8* uData = vData + width * height / 4; // U分量起始地址 // 创建一个与输入图像大小相同的输出图像 cv::Mat yuvImage(height, width, CV_8UC3); // 将YVU数据格式转换为YUV数据格式 for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { int index = y * width + x; int uvIndex = y / 2 * width / 2 + x / 2; // 获取Y、U、V分量的值 unsigned char Y = yData[index]; unsigned char U = uData[uvIndex]; unsigned char V = vData[uvIndex]; // 计算YUV分量的位置 int yuvIndex = y * width * 3 + x * 3; // 将YUV分量存储到输出图像中 yuvImage.data[yuvIndex] = Y; yuvImage.data[yuvIndex + 1] = U; yuvImage.data[yuvIndex + 2] = V; } } ``` 在上述代码中,我们假设YVU数据格式为YVU420P,在内存中依次存储Y、V、U分量。我们首先根据图像的宽度和高度计算出Y、V、U分量的起始地址。然后,我们创建一个与输入图像大小相同的输出图像。接下来,我们使用双层循环遍历每个像素,从Y、V、U分量中获取对应的值,并将它们存储到输出图像的相应位置。 请注意,上述代码仅适用于YVU420P格式的图像,如果你的图像格式不同,需要根据实际情况进行调整。同时,上述代码中的图像处理是逐像素进行的,可能效率较低。如果需要更高效的处理方法,可以考虑使用OpenCV等库提供的相关函数或者使用并行计算技术进行加速。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值