现在的位置: 首页 > 综合 > 正文

RGB16转换RGB24

2018年07月31日 ⁄ 综合 ⁄ 共 1759字 ⁄ 字号 评论关闭

RGB16转换RGB24

 

     在视频采集和视频的编解码中,常出现RGB16的数据格式,而我们最常用是图像处理数据格式为RGB24。他们之间需要转换,整理如下:

RGB16数据像数数据格式有二种:

    (1)RGB565 每个像素用16位表示,RGB分量分别使用5位、6位、5
    (2)RGB555 
每个像素用16位表示,RGB分量都使用5位(剩下的1位不用)

     RGB565使用16位表示一个像素,这16位中的5位用于R6位用于G5位用于B。程序中通常使用一个字(WORD,一个字等于两个字节)来操作一个像素。当读出一个像素后,这个字的各个位意义如下:
  高字节 低字节
  R R R R R G G G G G G B B B B B

  1. void Tran565to24(unsigned char* src, int w, int h, RtImage* dst)  
  2. {  
  3.     int x = 0, y = 0;  
  4.     int pos = 0;  
  5.     unsigned char val0 = val1 = 0;  
  6.     for (y = 0; y < h; y++)  
  7.     {  
  8.         for (x = 0; x < w; x++)  
  9.         {  
  10.             pos = (y * w  + x) * 2;  
  11.             val0 = *(src + pos);  
  12.             val1 = *(src + pos + 1);  
  13.               
  14.             pos =  dst->widthStep * y + x * dst->nChannels;  
  15.             *(dst->imageData + pos + 0) = val0 << 3;  
  16.             *(dst->imageData + pos + 1) = (val1 << 5) | ((val0 >> 3) & 0x1C);  
  17.             *(dst->imageData + pos + 2) = val1 & 0xF8;  
  18.         }  
  19.     }  
  20. }  

    RGB555是另一种16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。使用一个字读出一个像素后,这个字的各个位意义如下:
  高字节 低字节
  X R R R R G G G G G B B B B B (X表示不用,可以忽略)

  1. void Tran555to24(unsigned char* src, int w, int h, RtImage* dst)  
  2. {  
  3.     int x = 0, y = 0;  
  4.     int pos = 0;  
  5.     unsigned char val0 = val1 = 0;  
  6.     for (y = 0; y < h; y++)  
  7.     {  
  8.         for (x = 0; x < w; x++)  
  9.         {  
  10.             pos = (y * w  + x) * 2;  
  11.             val0 = *(src + pos);  
  12.             val1 = *(src + pos + 1);  
  13.               
  14.             pos =  dst->widthStep * y + x * dst->nChannels;  
  15.             *(dst->imageData + pos + 0) = val0 << 3;  
  16.             *(dst->imageData + pos + 1) = (val1 << 6) | ((val0 >> 2) & 0x38);  
  17.             *(dst->imageData + pos + 2) = (val1<<1) & 0xF8;  
  18.         }  
  19.     }  
  20. }  

from:http://blog.csdn.net/juyingmin/article/details/5733761

【上篇】
【下篇】

抱歉!评论已关闭.