3,881
社区成员
发帖
与我相关
我的任务
分享
#define RGB565_MASK_RED 0xF800
#define RGB565_MASK_GREEN 0x07E0
#define RGB565_MASK_BLUE 0x001F
void Convert(unsigned char *img565, unsigned char *imgGray, int iWidth, int iHeight)
{
WORD *pData565 = (WORD*)img565;
int iIndex = 0;
for (int x = 0; x < iHeight; ++x)
{
for (int y = 0; y < iWidth; ++y)
{
unsigned char chR = *(pData565 + iIndex) & RGB565_MASK_RED >> 11;
unsigned char chG = *(pData565 + iIndex) & RGB565_MASK_GREEN >> 5;
unsigned char chB = *(pData565 + iIndex) & RGB565_MASK_BLUE;
// unsigned char chGray = (chB*11 +chR*30 +chG*59+50)/100;
unsigned char chGray = (chB*0.3 +chR*0.11 +chG*0.59);
// unsigned char chGray = (chR + chG + chB) / 3.0;
// unsigned char chGray = (chB*29 +chR*77 +chG*150+128)/256;
// unsigned char chGray = (chB/31.0*0.3 +chR/31.0*0.11 +chG/63.0*0.59)*255;
*(imgGray + x * iWidth + y) = chGray;
++iIndex;
}
}
}