Demo entry 6656274

PDI

   

Submitted by anonymous on Oct 30, 2017 at 19:56
Language: C++. Code size: 2.3 kB.

#
include < stdio.h > #include < atlimage.h >

  /*========Instruções: Compilado no Visual Studio 2013 VC++ ==============
   File ->New -> Project -> Visual C++ -> Win32 Console Application

   Autor: @Daniel Felipe
  */

  //Converte RGB para escala de cinza
  //Cada pixel em tons de cinza = (R + G + B)/3
  int Converte(CImage imagem,
    const wchar_t * url) {

    int iWidth = imagem.GetWidth(); //pega a largura da imagem
    int iHeight = imagem.GetHeight(); //pega a altura da imagem

    for (int i = 0; i < iWidth; i++) {
      for (int j = 0; j < iHeight; j++) {
        COLORREF clrOriginal = imagem.GetPixel(i, j);
        //Intensidades de cada canal RGB em float
        float fR = GetRValue(clrOriginal); //retorna a intensidade (0 a 255) de vermelho do BYTE (i,j) RGB
        float fG = GetGValue(clrOriginal); //retorna a intensidade de verde (0 a 255) do BYTE (i,j) RGB
        float fB = GetBValue(clrOriginal); //retorna a intensidade de azul (0 a 255) do BYTE (i,j) RGB
        //printf("\nfR=%f\nfG=%f\nfB=%f", fR, fG, fB); //Descomentar para ver os valores de cada canal da imagem

        /*1 - pixels em float para escala de cinza (EC)*/
        float fEC = (fR + fG + fB) / 3;
        //printf("pixel Escala de cinza = %f\n", fEC); //Descomentar para ver o valor dos pixels em float	
        imagem.SetPixel(i, j, RGB(fEC, fEC, fEC));

        /*2 - pixels arredondados para inteiro para escala de cinza (EC)
         Comentar: imagem.SetPixel(i, j, RGB(fEC, fEC, fEC));
         descomentar: imagem.SetPixel(i, j, RGB(iEC, iEC, iEC));*/
        int iEC = (int) fEC;
        //printf("pixel Escala de cinza = %d\n", iEC); //Descomentar para ver o valor dos pixels em float	
        //imagem.SetPixel(i, j, RGB(iEC, iEC, iEC));
      }
    }

    //sobrepoem na mesma imagem no disco
    imagem.Save(url);
    return printf("\nImagem salva!\n");
  }

//Arredondar os valores dos pixels em tons de cinza para inteiros
int main(int argc,
  const char * argv[]) {

  CImage imagemRGB;

  const wchar_t * urlIn = L "C:\\Users\\Daniel\\Pictures\\Camera Roll\\flor_rgb.jpg";
  imagemRGB.Load(urlIn);

  //imagem em tons de cinza  (Gray Scale)
  return Converte(imagemRGB, urlIn);

}

This snippet took 0.00 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).