Bergalho 3 Posted December 27, 2022 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; } Share this post Link to post Share on other sites
Karbust 1,140 Posted December 28, 2022 Não sei especificamente como se lêm imagens, não é a minha área mas, penso que não pode ser feito dessa maneira, visto que os ficheiros RAW ainda contêm muitos metadados do dispositivo que capturou a imagem para posterior edição. Aliás, isto é válido para todas as imagens, muitas delas começam com um cabeçalho a indicar o tipo de formato da imagem: JPG/JPEG: Hidden Content Give reaction or reply to this topic to see the hidden content. PNG: Hidden Content Give reaction or reply to this topic to see the hidden content. DDS: Hidden Content Give reaction or reply to this topic to see the hidden content. Vais ter de encontrar outra forma de as ler em vez de estares a ler e começar logo a tentar dar parse aos pixéis. Share this post Link to post Share on other sites
Bergalho 3 Posted December 28, 2022 Será possível de alguma forma criar uma imagem só com tons de cor apenas com informação dos pixels e depois manipular? Share this post Link to post Share on other sites
Karbust 1,140 Posted December 28, 2022 Podes criar um ficheiro no formato que quiseres. Utilizas um modo binário para ler e escrever e gravas uma determinada estrutura. Este ficheiro não vai é funcionar com nenhum programa de visualização de imagens mas, se isso é algo que não necessitas, então força nisso. Share this post Link to post Share on other sites
Bergalho 3 Posted December 28, 2022 Consegui resolver o problema, partindo de um ficheiro raw apenas com informação dos pixels da imagem e nada mais, consigo alterar a informação e depois refazer a imagem. Convertendo o ficheiro final para jpeg e comparando com o original também em jpg noto as diferenças. Obrigado pelas dicas! Share this post Link to post Share on other sites