Carregar apresentação
A apresentação está carregando. Por favor, espere
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.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.