Boas,
Tenho um trabalho de universidade que consiste em aplicar uma máscara de convolução a uma imagem em formato raw. Essa máscara deve estar num ficheiro de texto. O meu problema é o seguinte, segundo o que pesquisei, para fazer isso preciso de ter informação sobre os pixels da imagem, para posteriormente aplicar a máscara (multiplicar pelos valores da máscara). Para tal tenho que ter os valores de cada pixel e é aí que está o meu problema, como ler a imagem e obter os valores dos pixels para uma matriz, para posteriormente aplicar a máscara. Tenho o seguinte código simples para leitura da imagem, mas penso que não estou a obter os valores dos pixels, mas sim algum outro tipo de informação da imagem. A imagem tem 528x360 pixels e nesse código o que faço é imprimir os valores e depois fazer uma cópia dos mesmos para verificar que consigo voltar a obter a imagem. Mas não consigo de forma nenhuma manipular esses valores, senão a nova cópia não abre. Alguém me poderia ajudar com isto?
obrigado
int main(void)
{
unsigned char buffer[528*360];
int i;
FILE* f;
FILE* f2;
if ((f = fopen("image2.raw", "rb")) == NULL)
{
fprintf(stderr, "Error opening file\n");
return 1;
}
fread(buffer, 1, 528*360, f);
for (i = 0; i < 528 * 360; i++)
{
printf("%02x| ", buffer[i]);
}
f2 = fopen("image2_copy.raw", "wb");
for (i = 0; i < 528*360; i++)
fwrite(&buffer[i], sizeof(unsigned char), 1, f2);
putchar('\n');
fclose(f);
fclose(f2);
return 0;
}