Configurao do IDE e primeiros exemplos com OpenCV. Manipulao de imagens, leitura e visualizao de imagens com diferentes formatos, manipulao directa de pixels. Exemplo de uma operao matemtica: subtraco de duas imagens. Interaco com a janela: seleco de pontos e desenho na imagem. Converso entre espaos de cores e formatos.
Documentao
A documentao do OpenCV pode ser consultada em:
http://opencv.org/documentation.html
Configurao do Code::Blocks
Para poder utilizar a biblioteca OpenCV num projecto em C++ so necessrios os passos seguintes (adaptados estrutura de directrios de cada um):
1. Indicar onde se encontram os ficheiros cabealho do OpenCV.
Para isso, nas Build options do Projecto, seleccione SearchDirectories -> Compiler.
Inclua o directrio onde se localizam os directrios com os vrios ficheiros cabealho.
Por exemplo: C:\opencv230\build\include 2. Indicar onde se encontram as vrias bibliotecas do OpenCV. Para isso, nas Build options do Projecto, seleccione SearchDirectories -> Linker. Inclua o directrio os vrios ficheiros lib.
3. Indicar os vrios ficheiros das bibliotecas (lib) do OpenCV. Para isso, nas Build options do Projecto, seleccione Linker Settings e adicione os vrios ficheiros. Ateno PATH
Para o desenvolvimento em ambiente Windows, a varivel PATH do sistema dever incluir a localizao do compilador e dos ficheiros DLL da biblioteca.
Compile e teste o cdigo fornecido no ficheiro OpenCV_ex_01.cpp
Analise o cdigo e verifique quais as funcionalidades que so usadas.
Note o modo como declarada, lida e visualizada uma imagem.
Tarefa
Aceda aos campos do objecto image para determinar o tamanho, o nmero de canais e o nmero de bytes por pixel da imagem lida. Computao Visual Introduo Biblioteca OpenCV 1 Semestre 2013-2014 Joaquim Madeira
1.2 Acesso directo aos pixels de uma imagem
Tarefas
Crie uma nova imagem, com a mesma dimenso da imagem lida, usando o mtodo cv::clone.
Aceda directamente aos pixels da imagem atravs do campo data e coloque a 0, na nova imagem, todos os pixels em que os valores da imagem original so menores que 128.
Visualize a imagem original e a imagem obtida.
Acrescente a possibilidade de o nome do ficheiro ser lido na linha de comando.
1.3 Operao matemtica simples: Subtraco entre imagens
Tarefas
A partir do exemplo fornecido, crie um novo programa que permita ler as duas imagens deti.bmp e deti.jpeg.
Visualize cada uma das imagens numa janela diferente.
Efectue a operao de subtraco para poder visualizar eventuais diferenas entre as duas imagens.
Comente o resultado.
Nota:
Para poder efectuar a subtraco necessrio criar primeiro uma imagem resultado com o mesmo tamanho, nmero de canais e tipo de dados.
(opcional)
Pode abrir uma imagem sua escolha num programa de manipulao de imagens e salvaguard- la com diferentes opes de compresso no formato jpeg.
Observe o resultado da subtraco para compresses diferentes. Computao Visual Introduo Biblioteca OpenCV 1 Semestre 2013-2014 Joaquim Madeira
1.4 Interaco Simples: Seleco de um pixel e desenho de um crculo
Tarefa
Acrescente ao programa anterior um callback para permitir detectar um click do utilizador na imagem, para tal utilize a funo:
void on_mouse(int event, int x, int y, int flags, void *param));
Ao usar a tecla da direita, o programa dever desenhar um crculo a cheio centrado no ponto seleccionado pelo utilizador.
1.5 Converso entre espaos de cor
Tarefa
Escolha uma imagem a cores e utilize a funo cvtColor para a converter para nveis de cinzento (CV_RGB2GRAY).
Tome em ateno que a imagem destino tem que ser criada, com as mesmas caractersticas que a imagem original (excepto o nmero de canais), antes de invocar a funo de converso.
(opcional)
Consultando a documentao da funo cvtColor, modifique o programa para visualizar a mesma imagem noutros espaos de cor diferentes (por exemplo: CV_RGB2HLS, CV_RGB2XYZ, CV_RGB2HSV).