import numpy as np
import cv2
def bgr2nv21(bgr):
i420 = cv2.cvtColor(bgr, cv2.COLOR_BGR2YUV_I420)
height = bgr.shape[0]
width = bgr.shape[1]
u = i420[height: height + height // 4, :]
u = u.reshape((1, height // 4 * width))
v = i420[height + height // 4: height + height // 2, :]
v = v.reshape((1, height // 4 * width))
uv = np.zeros((1, height // 4 * width * 2))
uv[:, 0::2] = v
uv[:, 1::2] = u
uv = uv.reshape((height // 2, width))
nv21 = np.zeros((height + height // 2, width))
nv21[0:height, :] = i420[0:height, :]
nv21[height::, :] = uv
return nv21
if __name__ == "__main__":
bgr = cv2.imread(r"video0_16_8084.982717.jpg")
nv21 = bgr2nv21(bgr)
#写入文件
nv21.astype("int8").tofile(r"video0_16_8084.982717.jpg.yuv")
网友评论