Ir ao conteúdo
  • Cadastre-se

C++ Cortar uma imagem e associar uma matriz de um arquivo a um struct


720pHD

Posts recomendados

Boa noite. Estou tendo problemas com uma parte do código do meu programa.

o erro que quero resolver acontece especificamente nessa linha: " img.Pic[3][LIM][LIM] = arq; "

 

o arquivo que quero abrir é uma imagem em formato .cpp, ela vem em forma de matriz, porém eu não consigo associar o arquivo "arq" a variável "img", lembrando q o

".Pic[3][LIM][LIM]" é o campo da minha struct onde eu quero armazenar a matriz contida em arq. Como resolver isso??

 

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>

using namespace std;

const int LIM = 512;

struct Imagem{

    int N_linhas;
    int N_colunas;
    int Pic[3][LIM][LIM];

};

void abre_img(char nome[], Imagem& img);

int main(){

    char nome_img[LIM];
    Imagem img;
    int item;

    cout << "=====================================" << endl;
    cout << " Bem vindo ao editor de imagens RDI" << endl;
    cout << "=====================================" << endl;
    cout << endl;

    cout << " Digite o nome do arquivo com a extensao a ser editada com letras minusculas." << endl;
    cout << endl;
    cout << " Exemplo: Glamurosa.ppm" << endl;
    cout << " Digite aqui: ";

    cin.getline(nome_img, LIM);

    abre_img(nome_img, img);

    cout << " Este editor de imagens aplica apenas um filtro por vez" << endl;
    cout << " Escolha o filtro desejado de acordo com a numeracao de cada item." << endl;
    cout << endl;
    cout << " (1)Cortar imagem" << endl;
  	//vai ter outras funções a serem implementadas mais pra frente

    cin >> item;

    if(item == 1){

         //a chamada da função "corta imagem" vai vir aqui.

    }

    return 0;
}

void abre_img(char nome[], Imagem& img){

    int tam = strlen(nome);

    Imagem picture;

    if (nome[tam-4]!= '.' || nome[tam-3]!='p' || nome[tam-2]!='p' || nome[tam-1]!='m'){
        cout << "================================================================================" << endl;
        cout << " ERRO: A extensao do arquivo eh invalida, insira um arquivo com a extensao .ppm" << endl;
        cout << "================================================================================" << endl;
        exit(0);
    }

    fstream arq;
    arq.open(nome);

    if(arq.is_open()){
        cout << endl;
        cout << "=============================================" << endl;
        cout << " SUCESSO: O arquivo foi aberto corretamente!" << endl;
        cout << "=============================================" << endl;
        cout << endl;
        img.Pic[3][LIM][LIM] = arq;

    }
    else{
        cout << endl;
        cout << "=============================================" << endl;
        cout << " ERRO: O arquivo nao foi aberto corretamente!" << endl;
        cout << "=============================================" << endl;
        cout << endl;
        exit(0);
    }

}

void corta_imagem (Imagem imagem_in, Imagem& imagem_out, int linha_inicial, int coluna_inicial, int linha_final, int coluna_final){

    int c, i, j;

    for(c = 1; c = 3; c++){
        for (i = linha_inicial; i < linha_final; i++){
            for (j = coluna_inicial; j < coluna_final; j++){
                imagem_out.pic[c][i][j] = imagem_in[]        //  parei aqui, a partir daqui o código e o programa está incompleto
            }
        }
    }
  
  // se possivel, também gostaria de saber como cortar uma matriz e armazenar a matriz menor resultante em uma outra passada por referencia. (exatamente onde eu parei acima)

 


}image.thumb.png.43174e2304e11de161dca65cdc1ace4a.png

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...