本文介绍了如何在C或C ++中将彩色图像转换为灰度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在C或C ++中将彩色图像转换为灰度?
此处存在的所有线程均在C#

how to convert coloured image to grayscale in C or C++ ?
All the threads present here give solution in C#

推荐答案

void convert(CImage* pcImage)
{
  ASSERT(pcImage);

  int iWidth(pcImage->GetWidth());
  int iHeight(pcImage->GetHeight());
  
  if (iWidth && iHeight) {
    for (int i = 0; i < iWidth; i++) {
      for (int j = 0; j < iHeight; j++) {
        COLORREF clrOriginal(pcImage->GetPixel(i, j));
        float fR(GET_R(clrOriginal));
        float fG(GET_G(clrOriginal));
        float fB(GET_B(clrOriginal));

        float fWB = sqrt((fR * fR + fG * fG + fB * fB) /3);
        pcImage->SetPixel(i, j, RGB(fWB, fWB, fWB));
      }
    }
  }
}



这篇关于如何在C或C ++中将彩色图像转换为灰度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-18 00:46