Atenção: Estas páginas serão constantemente atualizadas durante o curso. Última atualização: 08/22/2005
O programa fornecido no link tem quatro módulos: arInterface.c (trata da interface IUP/IM/OpenGL), arProcess.c (que voce deve implementar), jv.c (módulo extraído do programa JuizVirtual que tem um conjunto de funções para achar as linhas de uma imagem) e IconLib.c (que contém a definição de alguns botões da IUP que voce nao deve se preocupar).
O programa tem a interface mostrada na figura abaixo.
Interface do programa fornecido
A primeira parte deste trabalho consiste em implementar o módulo arProcess.c de forma a desenhar uma marca que acompanhe os vértices do padrão visto pela câmera. Para isto voce deve mudar as implementações das funções do arProcess.c que são chamadas pela interface:
void userOpen(int
width, int height, char* model_file_name);
void userProcessLeft(int width, int height, unsigned char* inFrame, int* flags,
float* values,
unsigned char* outFrame);
void userProcessRight(int width, int height, unsigned char* inFrame, int* flags,
float* values,
unsigned char* outFrame);
void userDrawLeft(int width, int height);
void userDrawRight(int width, int height);
void userClose( );
As funções
userOpen e
userClose
são utilizadas para alocar e desalocar memória como
está exemplificado no arquivo fornecido.
Os parâmetros width
e
height
são a largura e altura dos canvas (320x240,
neste caso). O string
model_file_name
contém o nome do arquivo que contém as coordenadas das linhas no papel de
calibração "modelo.mdl"
dado no arquivo zip fornecido.
As funções: userProcessLeft e userProcessRight são utilizadas para processar cada quadro capturado pela câmera. Os parâmetros:
int width e height são a largura e altura dos quadros (320x240, neste caso)
unsigned char inFrame[3*width*height] contém is valores de RGB dos pixels da imagem.
int flags[3]contém três flags de valor 0 ou 1 que correspondem ao estado dos botões F1, F2 e F3 da interface (use para controlar passos opcionais de seu algoritmo).
float values[2] contém dois valores entre [0,1] que podem ser utilizados para ajustar limites do seu algortimo.
unsigned char inFrame[3*width*height] é um parâmetro de saída (o único) que contém is valores de RGB dos pixels da imagem inferior (use para ilustrar estágios intermediários de seu algorithmo).
As funções: userDrawLeft e userDrawRight são chamadas logo após a colocação das imagens das câmeras nos canvas superiores. Use estas funções para desenhar os vértices.