jefers0n
(usa Suse)
Enviado em 06/04/2009 - 20:53h
Pessoal, semestre passado recebi um trabalho que não consegui fazer e acabei reprovando na disciplina(LaproI), caso neste semestre caia algo paraecido de trabalho final ou em prova(acho meio dificil) queria pelo menos ter noção de como fazer, pois apesar das explicações do professor eu fiquei perdido e confuso com o problema proposto.
(trabalhamos em aula sempre com gcc ou g++)
Pois bem, vou colar o enunciado passado para a turma:
----> Objetivo: O objetivo deste trabalho é desenvolver um programa capaz de ler, tratar e gravar uma imagem.
----> Descrição: Você deverá ler uma imagem de um arquivo no formato binário (.DAT) descrito abaixo, tratá-la(veja a descrição dos possíveis tratamentos) e gravá-la novamente no mesmo formato.
No contexto deste trabalho, uma imagem é formada por pontos, nos quais a cor é dada por 3 valores inteiros de 1 byte. Estes valores correspondem aos valres de RED, GREEN e BLUE que formam a cor do ponto.
Para armazenar um inteiro de 1 byte declare variáveis do tipo unsigned char.
Os pontos da imagem devem ser armazenados em uma matriz como:
unsigned char Imagem[1000][1000][3].
Nesta matriz, os 2 primeiros índices são as posições Y e X dos pontos, respectivamente.
Dado um ponto de coordenadas (cx,cy), a sua cor é definida pelos seguintes dados:
Imagem[cy][cx][0] <<< componente R da cor
Imagem[cy][cx][1] <<< componente G da cor
Imagem[cx][cy][3] <<< componente B da cor
Se você desejar, por exemplo, imprimir na tela os valores de R,G e B de todos pontos de uma imagem, separados por linha, pode fazer conforme o código abaixo. Considere que TAMX e TAMY armazenam as dimensões da imagem.
for(y=0;y< TAMY;y++)
{
printf("Linha %d: \n", y);
for(x=0; x<TAMX; x++)
{
int r,g,b;
r = Imagem[y][x][0];
g = Imagem[y][x][1];
b = Imagem[y][x][2];
printf("(%d, %d, %d", r,g,b);
}
printf("\n");
}
-----> Formato de imagens: Os arquivos DAT são arquivos binarios que armazenam as imagens seguem o seguinte formato.
TAMX Número do tipo int que define o número de colunas de uma imagem
TAMY Número do tipo int que define o número de linhas de uma imagem
R - Número inteiro do tipo unsigned char que define o valor de RED do primeiro ponto, da primeira linha, da imagem
G - Número inteiro do tipo unsigned char que define o valor de GREEN do primeiro ponto, da primeira linha, da imagem
B - Número inteiro do tipo unsigned char que define o valor de BLUE do primeiro ponto, da primeira linha, da imagem
R - Número inteiro do tipo unsigned char que define o valor de RED do segundo ponto, da primeira linha, da imagem
G - Número inteiro do tipo unsigned char que define o valor de GREE do segundo ponto, da primeira linha, da imagem
B - Número inteiro do tipo unsigned char que define o valor de BLUE do segundo ponto, da primeira linha, da imagem
R - Número inteiro do tipo unsigned char que define o valor de RED do ÚLTIMO ponto, da primeira linha, da imagem
G - Número inteiro do tipo unsigned char que define o valor de GREE do ÚLTIMO ponto, da primeira linha, da imagem
B - Número inteiro do tipo unsigned char que define o valor de BLUE do ÚLTIMO ponto, da primeira linha, da imagem
R - Número inteiro do tipo unsigned char que define o valor de RED do primeiro ponto, da SEGUNDA linha, da imagem
G - Número inteiro do tipo unsigned char que define o valor de GREEN do primeiro ponto, da SEGUNDA linha, da imagem
B - Número inteiro do tipo unsigned char que define o valor de BLUE do primeiro ponto, da SEGUNDA linha, da imagem
R - Número inteiro do tipo unsigned char que define o valor de RED do ÚLTIMO ponto, da ÚLTIMA linha, da imagem
G - Número inteiro do tipo unsigned char que define o valor de GREEN do ÚLTIMO ponto, da ÚLTIMA linha, da imagem
B - Número inteiro do tipo unsigned char que define o valor de BLUE do ÚLTIMO ponto, da ÚLTIMA linha, da imagem
------> Programa de conversão de imagem:
Para obter imagens no formato descrito acima utilize o programa ConvImg (Versão para Windows Versão para Linux ).
Na versão para Linux, este programa converte uma imagem JGP para DAT.
Na versão para Windows, este programa converte uma imagem BMP para DAT.
A ativação do programa pode ser feita das seguintes formas:
ConvImg Teste.jpg Lê a imagem 'Teste.jpg' e converte para Teste.dat (funciona no Linux)
ConvImg Teste.bmp Lê a imagem 'Teste.bmp' e converte para Teste.dat (funciona no Windows)
ConvImg Teste.jpg -DEBUG Lê a imagem 'Teste.jpg', converte para Teste.dat e imprime na tela os dados da imagem.
Pode ser usado para visualizar os dados da imagem. (funciona no Linux)
ConvImg Teste.bmp -DEBUG Lê a imagem 'Teste.bmp', converte para Teste.dat e imprime na tela os dados da imagem.
Pode ser usado para visualizar os dados da imagem. (funciona no Windows)
ConvImg Teste.dat Lê a imagem 'Teste.dat' e converte para Teste.jpg (funciona no Linux)
Lê a imagem 'Teste.dat' e converte para Teste.bmp (funciona no Windows)
Em todos os casos a imagem é exibida na tela.