¨ 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...