RGB转换为灰度vc代码
2010-10-26 10:10
197 查看
转自:http://www.cnblogs.com/itants/archive/2010/08/02/1790336.html
vc图像处理中经常要进行颜色空间的转换,因为摄像头采集的图像格式通常是RGB24或RGB32的,而大多数算法通常是适用于灰度图的,如人脸检测,边缘提取等,因此需要进行RGB到灰度图的转换。
下面是转换为灰度图的vc函数代码,注意通常RGB图像存放顺序是BGR格式的:
程序代码
BOOL RGBToGray(BYTE *pData,int iWidth,int iHeight,int iDepth)
{
BYTE red,green,blue;
BYTE grey;
if(iDepth != 3 && iDepth != 4)
{
return FALSE;
}
for(int j=0;j < iHeight;j++)
{
for(int i=0;i < iWidth;i++)
{
blue = *(pData + j*iWidth*iDepth+i*iDepth);
green = *(pData + j*iWidth*iDepth+i*iDepth + 1);
red = *(pData + j*iWidth*iDepth+i*iDepth + 2);
grey = (BYTE)((float)(red*0.299+green*0.587+blue*0.114));
*(pData + j*iWidth*iDepth+i*iDepth) = grey;
*(pData + j*iWidth*iDepth+i*iDepth + 1) = grey;
*(pData + j*iWidth*iDepth+i*iDepth + 2) = grey;
}
}
return TRUE;
}
vc图像处理中经常要进行颜色空间的转换,因为摄像头采集的图像格式通常是RGB24或RGB32的,而大多数算法通常是适用于灰度图的,如人脸检测,边缘提取等,因此需要进行RGB到灰度图的转换。
下面是转换为灰度图的vc函数代码,注意通常RGB图像存放顺序是BGR格式的:
程序代码
BOOL RGBToGray(BYTE *pData,int iWidth,int iHeight,int iDepth)
{
BYTE red,green,blue;
BYTE grey;
if(iDepth != 3 && iDepth != 4)
{
return FALSE;
}
for(int j=0;j < iHeight;j++)
{
for(int i=0;i < iWidth;i++)
{
blue = *(pData + j*iWidth*iDepth+i*iDepth);
green = *(pData + j*iWidth*iDepth+i*iDepth + 1);
red = *(pData + j*iWidth*iDepth+i*iDepth + 2);
grey = (BYTE)((float)(red*0.299+green*0.587+blue*0.114));
*(pData + j*iWidth*iDepth+i*iDepth) = grey;
*(pData + j*iWidth*iDepth+i*iDepth + 1) = grey;
*(pData + j*iWidth*iDepth+i*iDepth + 2) = grey;
}
}
return TRUE;
}
相关文章推荐
- RGB转换为灰度vc代码
- 高效的RGB类型到整型的转换
- 【shaderforge学习笔记】 RGB to HSV、HSV to RGB节点(色彩空间转换节点)
- 色度空间转换CSC(RGB转换YCBCR)的可综合verilog代码编写
- RGB/YUV的来历及其相互转换
- RGB与HSB之间的转换公式
- 10进制颜色码转换成RGB颜色值
- 计算机中的颜色IX——总述:RGB和HSV快速转换
- libjpeg 的使用sample RGB转换到JPEG
- 经典的算法 rgb yuv 查表转换
- RGB与Lab颜色空间互相转换
- RGB和HSV区别与互相转换
- YUV RGB 转换
- HSV颜色到RGB的转换C++代码 直接可用
- RGB与YCbCr颜色空间的转换
- Android-将RGB彩色图转换为灰度图
- 【OpenCV学习笔记】3.1 RGB图像转换为HSI图像
- Swift - UIColor16进制编码与RGB格式互相转换
- ios客户端学习-颜色将16位值转换成rgb值,UIColor与字符串互转
- 内联函数函数十六进制与RGB颜色值的相互转换 , 判断一个素数 , 内联函数, 面向对象