A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Manipulação de Imagens em OpenGL

Apresentações semelhantes


Apresentação em tema: "Manipulação de Imagens em OpenGL"— Transcrição da apresentação:

1 Manipulação de Imagens em OpenGL

2 Para realizar a carga de uma imagem, deve-se usar junto com o programa fonte um arquivo chamado ImageClass que encapsula as funções de OpenGL para acesso a imagens, para usar esta classe você deve criar uma instâcia da classe e carregar uma imagem da seguinte forma: Cria um objeto imagem     Image = new ImageClass();     r = Image->Load("C:\\local do arquivo\\imagem.bmp     if (!r)     {         printf("Imagem não encontrada. Verifique o nome do Arquivo.\n");         printf("Pressione ENTRE para encerrar.");         getchar();         exit(1);     }     else printf ("Imagem carregada!\n");

3 Compile o programa-fonte ImageTeste
Compile o programa-fonte ImageTeste.cpp e procure entender como funcionam as rotinas init e ConvertBlackAndWhite. Pressionando a tecla 2 na execução do programa você consegue observar o resultado da aplicação da rotina ConvertBlackAndWhite.

4 Você pode ainda, criar uma imagem vazia da seguinte forma:
Instacia o objeto que irá exibir uma nova imagem; Caso precise alterar o tamanho da nova imagem, mude os parâmetros da construtura, na chamada abaixo. NovaImagem = new ImageClass(Image->SizeX(), Image->SizeY()); No exemplo a nova imagem  é criada usando o tamanho Da imagem recém carregada de disco: Posiciona a imagem nova ao lado da antiga: NovaImagem->SetPos(Image->SizeX()+10, 0);

5 Para acessar os pontos da imagem você pode usar os
métodos ReadPixel e DrawPixel. Para obter a cor RGB de um pixel x,y na imagem use : Image->ReadPixel(GLint x, GLint y, unsigned char &r, unsigned char &g, unsigned char &b) Para alterar  a cor RGB de um pixel x,y na imagem use : Image->DrawPixel(GLint x, GLint y, unsigned char r, unsigned char g, unsigned char b) Para obter a Internsidade(Luminosidade) de um ponto use: i = Image->GetPointIntensity(x,y);

6 Exercício Tarefa 1: na função void ConvertBlackAndWhite(), mude o valor do LIMIAR para números pequenos como 5 ou 10; Tarefa 2: na função void ConvertBlackAndWhite(), mude o valor do LIMIAR para um número que represente a média entre os valores de intensidade máximo e mínimo encontrados;

7 Tarefa 3: na função void ConvertToGrayScale(), gere uma imagem em tons de cinza usando os métodos ReadPixel e DrawPixel da classe ImageClass; depois de implementado, acrescente o código abaixo no comando switch da função keyboard, que é uma função callback chamada sempre que o usuário pressiona uma tecla do teclado;     case '3': // chama função ConvertToGrayScale quando a tecla '3' for pressionada                           NovaImagem->Clear();               ConvertToGrayScale();  glutPostRedisplay();    // obrigratório para redesenhar a tela                           break;

8 Tarefa 4: na função ConvertToHalftone() gere uma imagem em duas cores usando o método de Halftone com uma matriz 2x2, usando o método GetPointIntensity da classe ImageClass; será necessário ampliar o tamanho da NovaImagem (olhe a rotina init abaixo e para alterar o tamanho da janela olhe a função main()). Observações: - para todas as tarefas experimente executar o programa usando as imagens b.bmp e eagle.bmp; - analise as rotinas arrow_keys e keyboard, verifique as teclas que podem ser usadas no programa e associe novas teclas para cada tarefa que for implementada.


Carregar ppt "Manipulação de Imagens em OpenGL"

Apresentações semelhantes


Anúncios Google