常見的RGB和YUV格式分析

2021-05-25 08:37:54 字數 1090 閱讀 6967

¨ rgb1、rgb4、rgb8都是調色盤型別的rgb格式,在描述這些**型別的格式細節時,通常會在bitmapinfoheader資料結構後面跟著乙個調色盤(定義一系列顏色)。它們的影象資料並不是真正的顏色值,而是當前畫素顏色值在調色盤中的索引。以rgb1(2色位圖)為例,比如它的調色盤中定義的兩種顏色值依次為0x000000(黑色)和0xffffff(白色),那麼影象資料001101010111…(每個畫素用1位表示)表示對應各畫素的顏色為:黑黑白白黑白黑白黑白白白…。

¨ rgb565使用16位表示乙個畫素,這16位中的5位用於r,6位用於g,5位用於b。程式中通常使用乙個字(word,乙個字等於兩個位元組)來操作乙個畫素。當讀出乙個畫素後,這個字的各個位意義如下:

高位元組              低位元組

r r r r r g g g     g g g b b b b b

可以組合使用遮蔽字和移位操作來得到rgb各分量的值:

#define rgb565_mask_red    0xf800

#define rgb565_mask_green  0x07e0

#define rgb565_mask_blue   0x001f

r = (wpixel & rgb565_mask_red) >> 11;   // 取值範圍0-31

g = (wpixel & rgb565_mask_green) >> 5;  // 取值範圍0-63

b =  wpixel & rgb565_mask_blue;         // 取值範圍0-31

¨ rgb555是另一種16位的rgb格式,rgb分量都用5位表示(剩下的1位不用)。使用乙個字讀出乙個畫素後,這個字的各個位意義如下:

高位元組             低位元組

x r r r r g g       g g g b b b b b       (x表示不用,可以忽略)

¨ rgb24使用24位來表示乙個畫素,rgb分量都用8位表示,取值範圍為0-255

¨ rgb32使用32位來表示乙個畫素,rgb分量各用去8位,剩下的8位不用

¨ argb32就是帶alpha通道的

下面介紹yuv格式:

更形象的圖示:

**:

YUV格式到RGB格式的轉換

yuyv格式到rgb格式的轉換 yuyv格式如下 y0u0y1v0 y2u1y3v1.說明 乙個y代表乙個畫素,而乙個y和uv組合起來構成乙個畫素,所以第0個畫素y0和第乙個畫素y1都是共用第0個畫素的u0和v0。而每個分量y,u,v都是占用乙個位元組的儲存空間。所以y0u0y1v0相當於兩個畫素,...

RGB與YUV格式 四

一 rgb rgb24一幀的大小size width heigth 3 byte,rgb32的size width heigth 4byte.1.rgb為紅綠藍三原色 yuv,rgb是色彩空間模型,而bmp,png,jpeg,gif是影象的檔案儲存格式。影象的每個畫素的三個分量為r g b,每個顏色...

YUV和RGB的互轉

yuv和rgb的轉換 模擬訊號 rgb轉yuv y 0.299r 0.587g 0.114b u 0.493 b y 0.147r 0.289g 0.436b v 0.877 r y 0.615r 0.515g 0.100b yuv轉rgb r y 1.14v g y 0.394u 0.581v b...