彩色图像转化为灰度图像,关键是根据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; }
图像灰度化效果:
|
文章评论(0条评论)
登录后参与讨论