原创 图像灰度化

2009-2-23 21:58 5971 10 10 分类: 软件与OS
    彩色图像转化为灰度图像,关键是根据R、G、B分量来计算灰度值,不同的计算方法,其结果也有所不同。最简单的计算灰度值的方法是直接求R、G、B分量的平均值。这里采用的R、G、B分量的加权平均值。

// 彩色图像转化为灰度图像
// 1. pColorData     彩色图像数据
// 2. nWidth         图像宽度
// 3. nHeight        图像高度
// 4. nWidthStep     图像行大小
// 5. pGrayData      灰度图像数据
// 6. nGrayWidthStep 灰度图像行大小
BOOL ColorToGray(unsigned char *pColorData, int nWidth, int nHeight, int nWidthStep,
    unsigned char *pGrayData, int nGrayWidthStep)
{
    int            i          = 0;
    int            j          = 0;
    float          fValue     = 0;
    unsigned char *pColorLine = NULL;
    unsigned char *pGrayLine  = NULL;
    pColorLine = pColorData;
    pGrayLine  = pGrayData;
    for (j = 0; j < nHeight; j++)
    {
        for (i = 0; i < nWidth; i++)
        {
            pGrayLine = (unsigned char)
                (pColorLine[i * 3]     * 0.299f +
                 pColorLine[i * 3 + 1] * 0.587f +
                 pColorLine[i * 3 + 2] * 0.114f);
        }
        pColorLine += nWidthStep;
        pGrayLine  += nGrayWidthStep;
    }
    return TRUE;
}


图像灰度化效果:

e16e60df-adfe-4351-901b-cddb16c3b16f.jpg        7f85049a-8c99-4e61-8d34-df4afc12dc20.jpg
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
10
关闭 站长推荐上一条 /3 下一条