python Opencv NV21图像转BGR

本文介绍了一种将YUV NV21格式图像转换为BGR格式的方法,使用Python的OpenCV库实现。代码中包含了从YUV NV21文件读取数据、转换格式并保存为BMP文件的完整过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

YUV NV21格式图像转BGR

import cv2
import numpy as np
import glob
import os
import tqdm
import argparse

ap = argparse.ArgumentParser()
ap.add_argument("-i", "--input", required=True,help="path to the input rgb")
ap.add_argument("-o", "--output", required=True,help="path to output directory to store augmentation examples")
ap.add_argument("-hh", "--height",type=int,default=2160,help="image H")
ap.add_argument("-w", "--width", type=int,default=3840,help="image W")
args = vars(ap.parse_args())



def NV212RGB(yuv_path,width,height):
    with open(yuv_path, 'rb') as f:
        yuvdata = np.fromfile(f, dtype=np.uint8)
    #yuvdata = yuvdata[4 * 4 :]
    cv_format=cv2.COLOR_YUV2BGR_NV21
    bgr_img = cv2.cvtColor(yuvdata.reshape((height*3//2, width)), cv_format)                    
    return bgr_img


if __name__ == '__main__':
    input_folder = args['input']
    out_folder = args['output']

    width  = int(args['width'])
    height = int(args['height'])

    yuv_path_list = glob.glob(os.path.join(input_folder,"*.nv21"))
    for yuv_path in tqdm.tqdm(yuv_path_list):                                        
        bgr_img = NV212RGB(yuv_path,width,height)
        basename = os.path.basename(yuv_path)
        savepath = os.path.join(out_folder,basename.replace(".nv21",".bmp"))
        cv2.imwrite(savepath,bgr_img)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值