1 / 8

Manipulação de imagens em OpenGL O objetivo desta aula é exibir e manipular imagens em OpenGL .

Manipulação de imagens em OpenGL O objetivo desta aula é exibir e manipular imagens em OpenGL . Baixe da página do professor o arquivo com exemplos e descompacte em um diretório. Abra o projeto Imagens-DEV4.9.8.0. dev .

mandel
Download Presentation

Manipulação de imagens em OpenGL O objetivo desta aula é exibir e manipular imagens em OpenGL .

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Manipulação de imagens em OpenGL O objetivo desta aula é exibir e manipular imagens em OpenGL. Baixe da página do professor o arquivo com exemplos e descompacte em um diretório. Abra o projeto Imagens-DEV4.9.8.0.dev. Se tiver dúvidas de como criar um projeto no DEVCPP,  consulte o material da primeira aula de OpenGL. Caso você esteja usando uma outra versão do DEVCPP, crie um novo projeto como uma aplicação do tipo Console, em C++ e inclua as diretivas de OpenGL ( -lopengl32 -lglut32 -lglu32 -lglaux). Note que estas diretivas não são exatamente as mesmas daquelas usadas em outras aulas. Neste caso, foi adicionada a biblioteca glaux que permite carregar iamgens BMP. Antes de executar o programa, é necessário definir onde está a imagem a ser carregada  pelo mesmo. para tanto, abra o fonte ImageTest2.cpp e procure a função voidinit(void). Dentro desta função há uma linha onde um método Load é chamado: r = Image->Load("C:... \\EAGLE.BMP"); Altere esta linha de forma a definir o local onde você colocou sue projeto ao descompactá-lo.

  2. Após a execução do programa, o resultado deve ser semelhante a este apresentado na figura abaixo. 

  3. A Classe ImageClass Para realizar a carga de uma imagem, o programa acima usar a classe ImageClass que encapsula as funções de OpenGL para acesso a imagens, para usar esta classe você deve criar uma instância da classe e carregar uma imagem da seguinte forma: // Cria um objeto imagemImage = newImageClass();    r = Image->Load("C:\\ .. \\EAGLE.BMP");if (!r)    {printf("Imagem não encontrada. Verifique o nome do Arquivo.\n");printf("Pressione ENTRE para encerrar.");getchar();exit(1);    }elseprintf ("Imagem carregada!\n");

  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. No exemplo a nova imagem  é criada    // usando o tamanho da imagem recém carregada de disco      NovaImagem = new ImageClass(Image->SizeX(), Image->SizeY());    // 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 o a Internsidade(Luminosidade) de um ponto use:i = Image->GetPointIntensity(x,y);

  6. Exercício 1 • Abra o programa-fonte ImageTeste2.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. Veja também a seção 4.1 da página sobre Imagens.1 . Crie uma rotina capaz de exibir a imagem de entrada em tons de cinza, conforme a imagem abaixo. Lembre-se que você pode fazer uma imagem R, G, B em tons de cinza simplesmente igualando os valores R, G e B iguais a média dos três valores originais.

  7. 5.1 Filtros Passa-altaTrata a curva mantendo trechos de alfa freqüência e eliminando trechos de baixa freqüência Usado para detectar bordas em imagens • Algoritmos • 1)Detectar bordas não horizontais Para cada ponto (x,y) de uma linha     Se (Cor(x-1,y) - Cor(x,y)) > limiar     Então Gera um ponto na imagem de saída na posição (x,y) • 2)Detectar bordas não verticais Para cada ponto (x,y) de uma coluna     Se (Cor(x,y-1) - Cor(x,y)) > limiar     Então Gera um ponto na imagem de saída na posição (x,y)

  8. Exercício 2Complete a rotina void DetectImageBorders() a fim de detectar as bordas de uma imagem, como na figura abaixo.

More Related