kamera daten
-
also ich hab die rohdaten der kamera
mit... OpenClipboard(Cam); EmptyClipboard(); capGrabFrame(Cam); capEditCopy(Cam); CloseClipboard(); ... OpenClipboard(Cam); if(IsClipboardFormatAvailable(CF_BITMAP)) { int width,height; char Text[100]; Frame = (HBITMAP)GetClipboardData(CF_BITMAP); CBitmap * p_bitmap; p_bitmap=CBitmap::FromHandle(Frame); if(p_bitmap==NULL)ErrorMsg("FEHLER BEIM BILD ABHOLEN"); SelectObject(Copy,p_bitmap); BITMAP BMI; p_bitmap->GetBitmap(&BMI); width = breite; height = hoehe; RGBMap= (unsigned char*)malloc(width*height*3); p_bitmap->GetBitmapBits(width*height*3,RGBMap); }abgeholt
dann convertier ich es in ein 2d array aber ab da stimmt dann nichts mehr
könnt das an der einstellung vom deskotp liegen 32bit??
-
kamera schrieb:
ab da stimmt dann nichts mehr
gewöhn dir bitte genauere fehlerbeschreibungen an
hat nix mit deinem desktop zu tun
in der bitmap struktur stehen alle infos zum bitmap drin
du kannst nich davon ausgehn, dass es 3 bytes per pixel sindtypedef struct tagBITMAP { LONG bmType; LONG bmWidth; LONG bmHeight; LONG bmWidthBytes; WORD bmPlanes; WORD bmBitsPixel; LPVOID bmBits; } BITMAP, *PBITMAP;benutz die infos für dein malloc
-
du meinst
RGBMap= (BITMAP)malloc(width*height);oder???
aber wie soll ich dann damit an die pixel kommen??
steht des in bmBitsPixel??
-
da gibts ne dolle doku von microsoft die nennt sich msdn
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_2h6a.asp
bmBits
Pointer to the location of the bit values for the bitmap. The bmBits member must be a long pointer to an array of character (1-byte) values.bzw. nochma deutlich
BMI.bmBits ist ein zeiger auf die bilddatenund das mit der genauen fehlerbeschreibung war ernst gemeint
kannst dir villeicht vorstellen wieviele variationen des nicht stimmens es beim programmieren gibt