Hy!
Ich programmiere gerade ein bisschen mit einer Webcam, und stoße schon auf mein erstes Problem:
Das Bild einzulesen funktioniert perfekt, ich kopiere es dann in's Clipboard (per capEditCopy()), von dort kann ich es auch z.B. ins Paint einfügen.
Jetzt beginnt das Problem, wenn ich nun versuche das Bitmap in meinem Programm anzuzeigen ( zwei for-Schleifen ineinander, und dann SetPixel()). Lt. MSDN sollte doch genau hinter der BITMAPINFO Struktur das Bitmap in Arrayform liegen. ( ich lesen mit GetClipboardData( CF_DIB) ein) Dann speichere ich die wichtigen Informationen (Größe...), und die Adresse der BITMAPINFO+sizeof( BITMAPINFO) in einer globalen Struktur. Danach ein InvalidateRect() und das Bild neu zeichnen.
Dies geschieht eben, indem ich "Zeilen" und "Spalten" in zwei ineinandergeschachtelten for-Schleifen durchgehe, und dann die Adresse meines Pixels mit
berechen, und diesen dann per SetPixel() in mein Fenster mal.
Meine Probleme sind nun:
1. SetPixel ist viel zu langsam dafür, gibt es eine andere Möglichkeit?
2. Das Bild ist vertikal gespiegelt ( kein Problem die Zeilen anders zu lesen, aber warum ist es gespiegelt?)
3. Es gibt Fehler in der linken unteren Ecke des Bildes, bzw. wenn ich ein kleines Bild nehme z.B. 5*5 Pixel sieht man nur noch irgendetwas.
Ich muss noch dazusagen, das ich momentan mein Bild aus Pain herauskopiere, weil meine Kamera noch nicht gekommen ist, und mein Schulkollegen, mit dessen Kamera ich sonst arbeite seine selbst benötigt.
Wäre toll wenn mir jemand helfen könnte
mfg
uhu01
Ich programmiere gerade ein bisschen mit einer Webcam, und stoße schon auf mein erstes Problem:
Das Bild einzulesen funktioniert perfekt, ich kopiere es dann in's Clipboard (per capEditCopy()), von dort kann ich es auch z.B. ins Paint einfügen.
Jetzt beginnt das Problem, wenn ich nun versuche das Bitmap in meinem Programm anzuzeigen ( zwei for-Schleifen ineinander, und dann SetPixel()). Lt. MSDN sollte doch genau hinter der BITMAPINFO Struktur das Bitmap in Arrayform liegen. ( ich lesen mit GetClipboardData( CF_DIB) ein) Dann speichere ich die wichtigen Informationen (Größe...), und die Adresse der BITMAPINFO+sizeof( BITMAPINFO) in einer globalen Struktur. Danach ein InvalidateRect() und das Bild neu zeichnen.
Dies geschieht eben, indem ich "Zeilen" und "Spalten" in zwei ineinandergeschachtelten for-Schleifen durchgehe, und dann die Adresse meines Pixels mit
Code:
pAktPix = pBitmap.datas + Spalte * 3 + Zeile * pBitmap.dwWidth * 3
Meine Probleme sind nun:
1. SetPixel ist viel zu langsam dafür, gibt es eine andere Möglichkeit?
2. Das Bild ist vertikal gespiegelt ( kein Problem die Zeilen anders zu lesen, aber warum ist es gespiegelt?)
3. Es gibt Fehler in der linken unteren Ecke des Bildes, bzw. wenn ich ein kleines Bild nehme z.B. 5*5 Pixel sieht man nur noch irgendetwas.
Ich muss noch dazusagen, das ich momentan mein Bild aus Pain herauskopiere, weil meine Kamera noch nicht gekommen ist, und mein Schulkollegen, mit dessen Kamera ich sonst arbeite seine selbst benötigt.
Wäre toll wenn mir jemand helfen könnte
mfg
uhu01