RGB565图像转灰度图像

yhterry 2012-06-11 03:02:08
各位大侠,我写了个RGB565转灰度图像的算法,但是转换后的灰度图像过暗,不知道是怎么回事,求帮助啊...
#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;
}
}
}

565图像

灰度图像
...全文
320 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhterry 2012-06-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
unsigned char chR = ((*(pData565 + iIndex) & RGB565_MASK_RED) >> 11 ) << 3;
unsigned char chG = ((*(pData565 + iIndex) & RGB565_MASK_GREEN) >> 5) << 2;
unsigned char chB = (*(pData565 + ……
[/Quote]
谢谢了!!!
mLee79 2012-06-11
  • 打赏
  • 举报
回复
unsigned char chR = ((*(pData565 + iIndex) & RGB565_MASK_RED) >> 11 ) << 3;
unsigned char chG = ((*(pData565 + iIndex) & RGB565_MASK_GREEN) >> 5) << 2;
unsigned char chB = (*(pData565 + iIndex) & RGB565_MASK_BLUE) << 3 ;

>> 的优先级比 & 高, 再加括号的说...
yhterry 2012-06-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

unsigned char chR = (*(pData565 + iIndex) & RGB565_MASK_RED >> 11 ) << 3;
unsigned char chG = (*(pData565 + iIndex) & RGB565_MASK_GREEN >> 5) << 2;
unsig……
[/Quote]
我试了一下,亮度没有问题了...但是图像很花...这个不会是设备的问题吧?
[img]http://my.csdn.net/my/album/detail/1178934[/img]
mLee79 2012-06-11
  • 打赏
  • 举报
回复
unsigned char chR = (*(pData565 + iIndex) & RGB565_MASK_RED >> 11 ) << 3;
unsigned char chG = (*(pData565 + iIndex) & RGB565_MASK_GREEN >> 5) << 2;
unsigned char chB = (*(pData565 + iIndex) & RGB565_MASK_BLUE) << 3 ;

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧