Domanda

Ho una domanda per la lettura di un'immagine BMP. Come posso ottenere il valore del pixel (valori R, G, B) un'immagine BMP in? Qualcuno mi può aiutare utilizzando il linguaggio di programmazione C?

È stato utile?

Soluzione

Il modo più semplice sarebbe quella di trovare una buona biblioteca di manipolazione delle immagini per la piattaforma scelta e l'uso che.

Il modo più difficile potrebbe essere quella di aprire il file e in realtà interpretare i dati binari all'interno. Per fare questo è necessario il BMP specifica file . Mi consiglia di provare la via più facile prima.

Altri suggerimenti

Nota: potrebbe essere necessario prendere un byte in più per i valori alfa se la BMP ha canale alfa. In quell'immagine caso verrebbe image[pixelcount][4], e si dovrebbe aggiungere un'altra linea getc(streamIn) ritenere che il quarto indice. Il mio BMP si rivelò non hanno bisogno di questo.

 // super-simplified BMP read algorithm to pull out RGB data
 // read image for coloring scheme
 int image[1024][3]; // first number here is 1024 pixels in my image, 3 is for RGB values
 FILE *streamIn;
 streamIn = fopen("./mybitmap.bmp", "r");
 if (streamIn == (FILE *)0){
   printf("File opening error ocurred. Exiting program.\n");
   exit(0);
 }

 int byte;
 int count = 0;
 for(i=0;i<54;i++) byte = getc(streamIn);  // strip out BMP header

 for(i=0;i<1024;i++){    // foreach pixel
    image[i][2] = getc(streamIn);  // use BMP 24bit with no alpha channel
    image[i][1] = getc(streamIn);  // BMP uses BGR but we want RGB, grab byte-by-byte
    image[i][0] = getc(streamIn);  // reverse-order array indexing fixes RGB issue...
    printf("pixel %d : [%d,%d,%d]\n",i+1,image[i][0],image[i][1],image[i][2]);
 }

 fclose(streamIn);

~ Locutus

Hai bisogno di studiare il formato di file BMP. E 'più facile da leggere non compressi file BMP a 24 bit. Essi contengono solo un'intestazione i valori iniziali e RGB di ogni pixel.

Per iniziare con questo, controllare l'esempio immagine bitmap 2x2 all'indirizzo http://en.wikipedia.org / wiki / BMP_file_format . Seguire le istruzioni riportate di seguito.

  1. Creare l'immagine 2x2 BMP mostrata su Wikipedia.
  2. Aprire il file in modalità binaria utilizzando il programma C.
  3. Si posiziona al byte 54.
  4. Leggi 3 byte.

Il byte sarebbe 0, 0 e 255 rispettivamente. (Non è sicuro se l'ordine è RGB. Avevo fatto questa lunga indietro e penso che l'ordine non è RGB. Basta verificare questo.)

Più semplice di così! Studiare l'intestazione del BMP per capire di più sul formato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top