逐像素地将Iplimage从RGB转换为灰色

时间:2015-07-24 05:01:57

标签: image

我正在尝试将Iplimage从RGB转换为灰色,但转换后图像看起来非常嘈杂。有没有办法获得更好的形象。这就是我所做的。

 void gray()
{
    for (int i = 0; i<image->width*image->height*image->nChannels;i+=image->nChannels) 
        {
            float b=abs(image->imageData[i]);
            float g=abs(image->imageData[i+1]);
            float r=abs(image->imageData[i+2]);
            float a=(float)(b+g+r)/3;
            //a=a/256;
           - if(a<0)
           {
               a=0;
        }
    image->imageData[i]=a;
    image->imageData[i+1]=a;
    image->imageData[i+2]=a;
   }
}

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

cv::Mat m = cv::cvarrToMat(image);
cv::Mat chan[3];
cv::split(m, chan);
m = (chan[0] + chan[1] + chan[2])/3.

P.S。未经测试