![](https://csdnimg.cn/release/download_crawler_static/86380198/bg5.jpg)
灰度化后的 R = 处理前的 R * 0.3+ 处理前的 G * 0.59 +处理前的 B *
0.11
灰度化后的 G = 处理前的 R * 0.3+ 处理前的 G * 0.59 +处理前的 B * 0.11
灰度化后的 B = 处理前的 R * 0.3+ 处理前的 G * 0.59 +处理前的 B * 0.11
注意:第二种方法更好。
//******************灰度转换函数*************************
//第一个参数 image 输入的彩色 RGB 图像;
//第二个参数 imageGray 是转换后输出的灰度图像;
//*************************************************************
void ConvertRGB2GRAY(const Mat &image,Mat &imageGray)
{
if(!image.data||image.channels()!=3)
{
return ;
}
imageGray=Mat::zeros(image.size(),CV_8UC1);
uchar *pointImage=image.data;
uchar *pointImageGray=imageGray.data;
int stepImage=image.step;
int stepImageGray=imageGray.step;
for(int i=0;i<imageGray.rows;i++)
{
for(int j=0;j<imageGray.cols;j++)
{
pointImageGray[i*stepImageGray+j]=0.114*pointImage[i*stepImage+3*
j]+0.587*pointImage[i*stepImage+3*j+1]+0.299*pointImage[i*stepImage+3
*j+2];
}