Python 读取读取 YUV(NV12) 视频文件实例视频文件实例
今天小编就为大家分享一篇Python 读取 YUV(NV12) 视频文件实例,具有很好的参考价值,希望对大家有所帮
助。一起跟随小编过来看看吧
一、一、YUV 简介简介
YUV:是一种颜色编码方法,常使用在各个视频处理组件中
Y'UV, YCbCr, YPbPr等专有名词都可以称为 YUV,彼此有重叠
Y表示明亮度(单取此通道即可得灰度图),U和V则是色度、浓度
主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0
可以根据其采样格式来从码流中还原每个像素点的 YUV 值,进而通过 YUV 与 RGB 的转换公式提取出每个像素点的 RGB
值,然后显示出来
YUV4:2:0 数据在内存中的长度是 3 / 2 * heigth * width,是 RGB24(heigth * width * 3) 格式视频数据内存的一半
二、二、YUV420((NV12、、NV21、、I420、、YV12))
# NV12、NV21 的存储格式为 Y 平面,UV 打包,即:Y 信息存储在一个数组中,UV 信息存储在一个矩阵中。
# 不同点在于 UV 的排列顺序
NV12: YYYYYYYY UVUV => YUV420SP
NV21: YYYYYYYY VUVU => YUV420SP
# I420、YV12 三个分量均为平面格式,即:分别存放在三个 Byte 型数组中
I420: YYYYYYYY UU VV => YUV420P
YV12: YYYYYYYY VV UU => YUV420P
假设一个分辨率为8X4的 YUV 图像,它们的格式如下图:
三、读取三、读取 YUV(NV12) 视频文件并保存视频文件并保存
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cv2
import numpy as np