Grauwerte eines Bitmaps in 2D Array speichern
-
Hallo,
ich möchte mit VC++ 6.0 die Grauwerte eines
8-bit grayscale Bitmap Bildes ermitteln und in einem 2D Array speichern.Ich möchte dafür keine MFC benutzen sondern eine Konsolenanwendung.Ich habe dafür folgende Funktion geschrieben wobei ich noch nicht richtig weiss,wie ich die Grauwerte an dem Array M übergeben kann und ausserdem kriege ich 5 Fehlermeldungen, die ich nicht ganz verstehe.#include <windows.h> #include <stdio.h> #include<string.h> #include <iostream> using namespace std; void Bitmap2Array(char filename, int** M) { //filename:Path where the bmp file is located char buf[100]; char file=strcpy(buf,filename); // HDC hdc; // Handle for the Bitmap static HBITMAP hbitmap; //Bitmapobject BITMAP bm; hbitmap=(HBITMAP)LoadImage(NULL,file,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); GetObject(hbitmap,sizeof(bm),&bm); int Width=bm.bmWidth,Height=bm.bmHeight; int i,j; byte red,green,blue; float gray; for(j=0;j<=Height;j++){ for(i=0;i<=Width;i++){ COLORREF col=GetPixel(hdc,j,i); // Extract color components (R,G,B) blue=RGBQUAD.rgbBlue(col); green=RGBQUAD.rgbGreen(col); red=RGBQUAD.rgbRed(col); // Convert from RGB to gray scale, using gray = 0.3f*red + 0.59f*green + 0.11f*blue; //Store the gray values in the array //M[i][j]= ; } } }Hätte Jemand eine Idee ?
Danke
-
guck dir mal die strukturen BITMAPFILEHEADER und BITMAPINFOHEADER an
die kannst du direkt von der festplatte mit fread oder sonstwas einlesen und füllen.der member bfOffBits von
BITMAPFILEHEADER hat dann den offset zu den pixeldaten gespeichert.http://msdn2.microsoft.com/en-us/library/ms532321(VS.85).aspx
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.