Frage

ich habe eine Frage zum Lesen eines bmp Bild. Wie kann ich den Pixelwert (R, G, B-Werte) in einem BMP-Bild bekommen? Kann mir jemand helfen mit mir die Programmiersprache C?

War es hilfreich?

Lösung

Der einfache Weg wäre eine gute Bibliothek zur Bildbearbeitung für Ihre gewählte Plattform zu finden und zu verwenden.

Der harte Weg wäre, die Datei zu öffnen und interpretieren tatsächlich die Binärdaten im Innern. Dazu müssen Sie die BMP-Datei-Spezifikation . Ich würde empfehlen, zunächst die einfache Möglichkeit, zu versuchen.

Andere Tipps

Hinweis: Sie müssen ein zusätzliches Byte für die Alpha-Werte greifen, wenn Ihre BMP Alpha-Kanal. In diesem Fall Bild wäre image[pixelcount][4], und Sie würden eine andere getc(streamIn) Zeilen hinzufügen, dass vierten Index zu halten. Meine BMP erwies sich nicht, dass müssen.

 // 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

Sie müssen das BMP-Dateiformat studieren. Es ist einfacher, unkomprimierte 24-Bit-BMP-Dateien zu lesen. Sie enthalten nur einen Header an den Anfang und RGB-Werte jedes Pixels.

mit diesem zu starten, klicken Sie das Beispiel von 2x2 Bitmap-Bild unter http://en.wikipedia.org / wiki / BMP_file_format . Folgen Sie den unten angegebenen Schritten.

  1. Erstellen Sie das 2x2 BMP-Bild auf Wikipedia gezeigt.
  2. Öffnen Sie die Datei im Binärmodus Ihr C-Programm.
  3. Suchen
  4. Byteposition 54
  5. Read 3 Bytes.

Das Bytes wäre 0, 0 und 255 ist. (Nicht sicher, ob der Auftrag ist RGB. Ich hatte diese lange zurück gemacht und ich denke, dass die Reihenfolge nicht RGB ist. Genau dies überprüfen.)

So einfach ist das! Studieren Sie die Header des BMP mehr über das Format zu verstehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top