|
楼主 |
发表于 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图像时可能需要进行适当的修改。 |
|