10Mar08 Processamento de imagens com Qt

Este semestre estou cursando uma matéria que se chama Processamento de Imagens Digitais na PUC-MG e, diga-se de passagem, estou gostando muito da matéria. Recebemos então nosso primeiro trabalho prático que consiste em 3 passos, sendo o que primeiro irá gerar a versão em escala de cinza de uma imagem. Considerei esta a oportunidade perfeita para aprender a trabalhar com Qt.

Como o trabalho necessitava de uma interface gráfica (exigência do professor), comecei com o Qt Designer. O programa é realmente muito bom e fácil de mexer! Por usar caixas de ferramentas flutuantes, recomendo o uso de uma área de trabalho somente para o programa.

O segundo passo foi escrever o comportamento da interface, ou melhor, o trabalho de fato. Como este não é um tutorial de Qt vou pular direto para a manipulação da imagem. Escrevi então o seguinte código para deixar a imagem em escala de cinza utilizando a QImage:

void
pidMain::generateGrayScale()
{
    // ocultei o código original pois se trata de recuperar o objeto QImage e nada mais
    QImage *original = getImage();
    QImage *gray = new QImage(original->width(), original->height(), QImage::Format_RGB32);
    QRgb grayPix;
    QColor *curPix;
    int bright;    

    for (int i =0; i < gray->width(); i++)
        for (int j = 0; j < gray->height(); j++)
        {
            curPix= &QColor::fromRgba(original->pixel(i, j));
            bright = qRound(0.3 * curPix->red() + 0.5 * curPix->green() + 0.2 * curPix->blue());
            grayPix = qRgb(bright, bright, bright);
            gray->setPixel(i, j, grayPix);
        }    

    // também ocultei o código original aqui. Agora temos uma imagem em escala de cinza no ponteiro "gray"
}

Espero que este código seja útil a alguém ! Caso queiram opinar, melhorar, estragar ou qualquer coisa, o código para alteração está aqui !

Abraços!

tags {, , }

3 comentários para “Processamento de imagens com Qt”

  1. Thinking About Something» Arquivo : Processamento de imagens com Qt - Parte II

    […] apenas para deixar vocês a par do que foi feito após aquele post. Continuei meu belo trabalho e hoje resolvi colocá-lo no Github[1], quem sabe ele não cresce e […]

  2. Alex Carneiro

    Também sou um pesquisador da área de processamento digital de imagens e me interesso por software livre, pena que ainda não tenho nenhum trabalho disponibilizado, mas algo virá no futuro.
    Sobre sua escolha com Qt, eu tentei usá-lo com a linguagem Python, porém estava tendo problemas. Solução: usar apenas o scilab para fazer simulações.
    Para finalizar, dou os parabéns pela iniciativa e espero poder trocar informações.

  3. Carlos Júnior

    E ai Alex, tudo bem? Bom, em meu segundo post sobre o assunto, verá que o código fonte do software foi liberado sob GPLv3. Ele não está 100% ainda, uma vez que não sou um profissional da área, mas mesmo concluíndo meu curso na área me comprometo a continuar envolvido no mesmo, ao menos até que tudo que se encontra nele fique 100% (eu disse ao menos! nada me impede de continuar :).

    Quanto ao PyQt, nunca o usei, mas acredito que deva seguir o mesmo padrão do Qt em C++, então talvez o fonte do Blind Camaleon lhe ajude em algo.

    Abraços!

Deixe seu comentário