Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [C] Da immagine raw a matrice di caratteri

    Ciao a tutti,
    faccio un secondo tentativo sperando di essere più chiaro!

    Ho un'immagine di dimensione 512x512 in scala di grigi (8bit per pixel) in formato raw.

    Da questa immagine dovrei ricavare una matrice di caratteri (anch'essa 512x512) nella quale ogni cella rappresenti un pixel dell'immagine. :master:

    Se apro l'immagine con wordpad ho notato che ogni riga di testo di wordpad contiene 2 righe dell'immagine... praticamente con wordpad vedo 256 righe di 1024 caratteri ciascuna.

    Come posso fare a leggere i caratteri del file ed inserirli nella matrice 512x512?

    Grazie!

  2. #2
    Dovresti avere un codice simile a questo
    codice:
    #include <stdio.h> 
    #include <stdlib.h> 
    
    int main () 
    { 
    	int img[512][512]; /* matrice dell'immagine */
            int x,y;           /* Indici della matrice */
    	FILE *fi,; 
            /* Apre il file "immagine.raw" .
    	Da sostituire con il nome del file scelto*/
    	fi=fopen("immagine.raw","r+");
    	if (fi!=NULL) 
    	{
        	   for(y=0;y<511,y++)
               {
                  for(x=0;x<511;x++)            
                     img[x][y]=getc(fi)
    	   }
    	   fclose(fi);
    	}
    	else
    	   printf("Il file non esiste\n");
    	return 0; 
    }
    Non l'ho testato , ma dovrebbe funzionare . Saluti

  3. #3
    Innanzitutto grazie mille per l'aiuto, però purtroppo non funziona!
    Praticamente carica in tutte le righe della matrice gli stessi dati che però non corrispondono a quelli originali!
    Mi spiego meglio con un esempio... praticamente fà una cosa simile:

    Immagine originale:
    Ç═╚
    ç┼á
    s¼▓

    Matrice ottenuta:
    îìÄ
    îìÄ
    îìÄ


  4. #4
    Ancora non ho risolto...
    suggerimenti???

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa ma non ho ancora capito a fondo il tuo problema ...

    Forse, se posti il codice che hai usato, lo capisco da quello ...

  6. #6
    #include <stdio.h>
    #include <stdlib.h>
    #define size 512

    int main ()
    {
    char img[size][size];
    int x,y,j;
    FILE *fi;

    fi=fopen("lena.raw","r+");
    if (fi!=NULL)
    {
    for(x=0;x<size;x++)
    for(y=0;y<size;y++)
    img[x][y]=getc(fi);
    fclose(fi);
    } else
    printf("Il file non esiste\n");

    for (j=0; j<size; j++) {
    printf("%c",&img[0][j]);
    }
    printf ("\n\n\n");
    for (j=0; j<size; j++) {
    printf("%c",&img[size-1][j]);
    }

    fflush (stdin);
    getchar();
    }

  7. #7
    le ultime due for stampano la prima e l'ultima riga della matrice ottenuta... se lo provi noterai che sono due righe uguali, e che non corrispondono a quelle che dovrei ottenere.

  8. #8
    dimenticavo... allegherei anche l'immagine solo che è di 250kb circa, dunque non ci riesco...

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Come fai a sapere quali sono le righe da ottenere?

    Se visualizzi dei caratteri (che potrebbero non essere visualizzabili) come fai a capire di cosa si tratta?

    Nell'istruzione

    printf("%c",&img[size-1][j]);

    stai visualizzando l'indirizzo dell'elemento? Ma cosa c'entra?

  10. #10
    Innanzitutto grazie mille per l'aiuto! la stampa dell'indirizzo è stata una distrazione... e l'ho corretta.
    Rimane però un problemino: :master:
    fino alla 68esima riga carica i dati perfettamente... dalla riga 69 in poi non carica niente... dove sbaglio???
    grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.