C++ - Risorse gratuite :: programmi,esercizi,visual,dev,compilatori,esempi,classi,strutture,liste,array,funzioni,C,java :: Leggi il Topic - Estrazione componenti rgb
 FAQFAQ   CercaCerca   Lista degli utentiLista degli utenti   RegistratiRegistrati   ProfiloProfilo   Messaggi PrivatiMessaggi Privati   LoginLogin 

Estrazione componenti rgb
Nuovo Topic   Rispondi    Indice del forum -> Aiuto - C++
Pagina 1 di 1
Precedente :: Successivo  
Autore Messaggio
Armaneddon
Nuovo membro



Messaggi: 1

MessaggioInviato: Martedì 03 Novembre 2009    Oggetto: Estrazione componenti rgb
Rispondi citando

Codice: Espandi/Riduci
#include<stdio.h>
#include<malloc.h>

int rows=512,cols=512;
unsigned char **img1,**imgR,**imgG,**imgB;

unsigned char** allocabuffer(int r, int c);
void eliminabuffer(unsigned char **buffer,int r);
void readraw(char *filepath,unsigned char **buffer);
void readrawR(char *filepath,unsigned char **buffer);
void readrawG(char *filepath,unsigned char **buffer);
void readrawB(char *filepath,unsigned char **buffer);
void saveraw(char *filepath,unsigned char **buffer);

FILE *out;

main()
{
   int i;
   
    imgR=allocabuffer(rows, cols);
      
    readrawR("C:\\Documents and Settings\\Paolo L\\Desktop\\EIV\\img.raw",imgR);

    saveraw("C:\\Documents and Settings\\Paolo L\\Desktop\\EIV\\img_R.raw",imgR);



    eliminabuffer(imgR,rows);
   }

unsigned char** allocabuffer(int r, int c)
{
   int i;
   unsigned char **buffer=(unsigned char**)malloc(r*sizeof(unsigned char*));
   for(i=0;i<r;i++)
      buffer[i]=(unsigned char*)calloc(3*c,sizeof(unsigned char));
   return (buffer);
}

// readraw RGB
void readrawR(char *filepath,unsigned char **buffer)
{
   int i;
   out=fopen(filepath,"rb");
   for(i=0;i<rows*cols*3;i=i+3) fread(buffer[i],1,1,out);
   fclose(out);
}

void readrawG(char *filepath,unsigned char **buffer)
{
   int i;
   FILE *source=fopen(filepath,"rb");
   for(i=1;i<rows;i=i+3) fread(buffer[i],1,cols,source);
   fclose(source);
}

void readrawB(char *filepath,unsigned char **buffer)
{
   int i;
   FILE *source=fopen(filepath,"rb");
   for(i=2;i<rows;i=i+3) fread(buffer[i],1,cols,source);
   fclose(source);
}

void eliminabuffer(unsigned char **buffer,int r)
{
   int i;
   for(i=0;i<r;i++) free(buffer[i]);
   free(buffer);
}

void saveraw(char *filepath,unsigned char **buffer)
{
   int i;
   FILE *source=fopen(filepath,"wb");
   for(i=0;i<rows;i++) fwrite(buffer[i],1,1,source);
   fclose(source);
}


Salve, avrei bisogno di un aiuto, dovrei creare un codice c che mi permetta di estrarre da un immagine raw che ho sul computer (sequenza di pixel rgb rgb rgb...) le componenti r, g e b e di salvarle in 3 buffer diversi per poi estrarre la componente y... ho provato a implementare questo codice ma c'è qualcosa che non torna perchè non mi restituisce un immagine a livelli di grigio per le sole componenti r... cosa sto sbagliando?[/code]
Torna in cima
Profilo Messaggio privato
Mostra prima i messaggi di:   
Nuovo Topic   Rispondi    Indice del forum -> Aiuto - C++
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi Topic in questo forum
Non puoi rispondere ai Topic in questo forum
Non puoi modificare i tuoi messaggi in questo forum
Non puoi cancellare i tuoi messaggi in questo forum
Non puoi votare nei sondaggi in questo forum


Powered by phpBB

 

home - esercizi base - esercizi oop - algoritmi - java - forum - info & siti amici

Siti partner: c++ maniacs . web-creations . compilatori.com