美文网首页
Python BGR转NV21(YUV420SP)

Python BGR转NV21(YUV420SP)

作者: VellBibi | 来源:发表于2022-03-08 16:49 被阅读0次
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")

相关文章

网友评论

      本文标题:Python BGR转NV21(YUV420SP)

      本文链接:https://www.haomeiwen.com/subject/lpbarrtx.html