Vous êtes sur la page 1sur 4

Computao Visual

Introduo Biblioteca OpenCV


1 Semestre 2013-2014 Joaquim Madeira



Guio 1

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.

Por exemplo: C:\opencv230\build\lib

Computao Visual
Introduo Biblioteca OpenCV
1 Semestre 2013-2014 Joaquim Madeira



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.

Por exemplo:

C:\Program Files\CodeBlocks\MinGW\bin;
C:\opencv230\build_MinGW\bin;

Ateno Recompilao

Os ficheiros da instalao do OpenCV podem no ser os adequados para o
ambiente de trabalho de cada um.

Pode ser necessrio recompilar as bibliotecas!

No caso do Windows, o processo est bem explicado no seguinte documento, e
pode ser seguido com as devidas adaptaes:

How to build binary for OpenCV2.2.0 using MinGW

http://www.argong.com/docs/how-to-OpenCV-2.2.0.pdf



1.1 Primeiro exemplo

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:

setMouseCallback( const string& winname,
MouseCallback on_mouse, void userdata=0 );

A funo invocada tem o seguinte prottipo:

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).