|  | 
 
 
 楼主|
发表于 2023-2-24 16:54:55
|
显示全部楼层 
| 可以使用Python中的OpenCV库来完成YUV到RGB的转换。下面是一个简单的示例代码: 
 python
 Copy code
 import cv2
 import numpy as np
 
 # 读取YUV格式的图像
 filename = "test.yuv"
 width = 640
 height = 480
 yuv = np.fromfile(filename, dtype=np.uint8)
 yuv = yuv.reshape((int(height*1.5), width))  # 注意,YUV数据是按照NV12格式排列的,U和V是交错存储的
 
 # 分离Y、U、V分量
 Y = yuv[:height, :]
 U = yuv[height:, ::2]
 V = yuv[height:, 1::2]
 
 # 转换成RGB格式
 R = Y + 1.13983 * (V - 128)
 G = Y - 0.39465 * (U - 128) - 0.58060 * (V - 128)
 B = Y + 2.03211 * (U - 128)
 rgb = np.dstack((B, G, R)).astype(np.uint8)
 
 # 显示RGB图像
 cv2.imshow("RGB", rgb)
 cv2.waitKey(0)
 cv2.destroyAllWindows()
 上述代码中,首先使用numpy.fromfile函数读取YUV格式的图像数据,并使用numpy.reshape函数将数据重新排列成Y、U、V分量。由于YUV数据是按照NV12格式排列的,因此U和V是交错存储的,需要使用切片操作分别取出。然后,根据上述公式计算出RGB值,并使用numpy.dstack函数将B、G、R三个通道合并成一个RGB图像。最后,使用OpenCV的cv2.imshow函数显示RGB图像。
 
 需要注意的是,上述代码中仅仅是将YUV格式的数据转换成了RGB格式的数据,如果需要对图像进行处理,可以使用OpenCV提供的各种图像处理函数。另外,由于图像格式不同,上述代码在处理不同格式的YUV图像时可能需要进行适当的修改。
 | 
 |