yuv的存儲格式
Ⅰ yuv圖片格式
yuv格式是一種圖片儲存格式,跟RGB格式類似。yuv中,y表示亮度,單獨只有y數據就可以形成一張圖片,只不過這張圖片是灰色的。u和v表示色差(u和v也被稱為:Cb-藍色差,Cr-紅色差)。最早的電視信號,為了兼容黑白電視,採用的就是yuv格式。一張yuv的圖像,去掉uv,只保留y,這張圖片就是黑白的。yuv可以通過拋棄色差來進行帶寬優化。比如yuv420格式圖像相比RGB來說,要節省一半的位元組大小,拋棄相鄰的色差對於人眼來說,差別不大。
yuv圖像佔用位元組數為 :
size = width * height + (width * height) / 4 + (width * height) / 4
RGB格式的圖像佔用位元組數為:
size = width * height * 3
RGBA格式的圖像佔用位元組數為:
size = width * height * 4
yuv420也包含不同的數據排列格式:I420,NV12,NV21.
I420格式:y,u,v 3個部分分別存儲:Y0,Y1…Yn,U0,U1…Un/2,V0,V1…Vn/2
NV12格式:y和uv 2個部分分別存儲:Y0,Y1…Yn,U0,V0,U1,V1…Un/2,Vn/2
NV21格式:同NV12,只是U和V的順序相反。
kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange = '420v',表示輸出的視頻格式為NV12;范圍: (luma=[16,235] chroma=[16,240])
kCVPixelFormatType_420YpCbCr8BiPlanarFullRange = '420f',表示輸出的視頻格式為NV12;范圍: (luma=[0,255] chroma=[1,255])
kCVPixelFormatType_32BGRA = 'BGRA', 輸出的是BGRA的格式