Python BGR转NV21(YUV420SP)

2022-03-08  本文已影响0人  VellBibi
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")
上一篇 下一篇

猜你喜欢

热点阅读