Desenvolvendo um Leitor de Imagens PPM para Projetos que Envolvam Manipulação de Imagens Digitais


"Processamento de imagem é qualquer forma de processamento de dados no qual a entrada e saída são imagens tais como fotografias ou quadros de vídeo. Ao contrário do tratamento de imagens, que se preocupa somente na manipulação de figuras para sua representação final, o processamento de imagens é um estágio para novos processamentos de dados tais como aprendizagem de máquina ou reconhecimento de padrões. A maioria das técnicas envolve o tratamento da imagem como um sinal bidimensional, no qual são aplicados padrões de processamento de sinal." wikipedia

Quando começamos a estudar sobre o assunto, uma das primeiras coisas que fazemos é pesquisar tipos de arquivos básicos e fáceis de se trabalhar. O formato PPM é um formato de arquivo que armazena informações brutas sobre a imagem. Ele é de simples uso e compreensão.

Nesse vídeo você vai aprender ac desenvolver um leitor simples para esse formato:



Código:

#include <iostream>
#include <stdlib.h>

struct Pixel {
    int r, g, b;
};

class Imagem {

    private:
        struct Pixel **pixels;
        int width, height;
        char tipo[2];

        void setPixels(FILE *arq) {

            struct Pixel **pixel;

            fscanf(arq, "%s %d %d\n\n", &this->tipo, this->width, this->height); //lendo primeira linha do arquivo de entrada

            pixel = (struct Pixel **) malloc (sizeof(struct Pixel *) * (this->height)); //alocando espaço em memoria para os pixels lidos no arquivo de entrada
            for (int i = 0; i < this->width; i++) {
                pixel[i] = (struct Pixel *) malloc (sizeof(struct Pixel) * (this->width));
            }

            for (int y = 0; y < this->height; y++) {
                for (int x = 0; x < this->width; x++) {
                    fscanf(arq, "%d %d %d ", &pixel[y][x].r, &pixel[y][x].g, &pixel[y][x].b); //alimentando o espaço de memória alocado com os pixels
                }
            }

            this->pixels = pixel;
        }

    public:

        Imagem(FILE *arq) {
            this->setPixels(arq);
        }

};

int main(int argc, char **argv) {

    FILE *arq = fopen(argv[1], "r");

    if (arq == NULL) {
        return 1;
    }

    Imagem *img = new Imagem(arq);

    return 0;
}
Desenvolvendo um Leitor de Imagens PPM para Projetos que Envolvam Manipulação de Imagens Digitais Desenvolvendo um Leitor de Imagens PPM para Projetos que Envolvam Manipulação de Imagens Digitais Reviewed by Dayvid on 00:07 Rating: 5

Nenhum comentário