批量转换不同宽高的YUV编码格式图片为jpg格式方法

NV12存储格式下YUV编码的图片转化成jpg格式方法

yuv文件名称的格式为:rgb_800_896_20220615193640.yuv

# -*-coding: utf-8 -*-
#@FileName : NV21yuv-rgb.py
import cv2
import numpy as np


def NV12RGB(yuv_path, width, height):
    with open(yuv_path, 'rb') as f:
        yuvdata = np.fromfile(f, dtype=np.uint8)
    cv_format = cv2.COLOR_YUV2BGR_NV12
    bgr_img = cv2.cvtColor(yuvdata.reshape((height*3//2, width)), cv_format)
    return bgr_img


if __name__ == "__main__":

    path = r"D:\自动化测试\YUV图片"  #yuv格式图片存放路径
    save_path = r"D:\LR\test"    #生成jpg文件目录
    from base.file_helper import FileHelper
    image_yuv_list = FileHelper.find_files(file_dirOrDirlist=path, file_suffix="yuv")
    id = 0
    for i in image_yuv_list:
        filename = i.split("\\")[-1]
        print(filename)
        width = int(filename.split("_")[1])
        height = int(filename.split("_")[2])
        img = NV12RGB(yuv_path=i, width=width, height=height)
        save_path_file = save_path + "\\" + str(id)+ ".jpg"
        id = id+1
        print(save_path_file)
        cv2.imwrite(save_path_file, img)

 

posted @ 2022-06-28 16:08  小菜鸟qing  阅读(696)  评论(0)    收藏  举报