Zugriff auf Webcam und Farbe des Bildes auswerten
-
Guten Tag,
ich bin noch nicht so ganz erfahren im programmieren, aber ich möchte auf jedenfall lernen es besser zu beherrschen. Im Moment arbeite ich mich gerade durch ein C++ Buch über OOP und MFC.Mein derzeitiges Vorhaben befasst sich damit, dass ich gerne eine Kamera an den PC anschließen möchte, die dann einen Schnappschuss macht, der auf dem PC gespeichert wird. Dieses Bild soll jetzt so ausgewertet werden, dass ermittelt wird, welche Farbe das Bild hat und diese Farbe dann ausgegeben wird. Das heißt, wenn ich zum Beispiel ein rotes Mauspad fotografiere soll "rot" übermittelt werden, wenn ich eine gelbe Wand fotografiere soll "gelb übermittelt werden. Dabei soll erkannt werden, welche Farbe auf dem Bild vorherrscht und überflüssiges soll verbachlässigt werden (z.b Herstellerschriftzug auf dem Mauspad).
Dies ist also mein Ziel und ich weiß, dass ich im Moment nicht in der Lage bin, dass zu verwirklichen. Ich möchte es aber gerne verwikrlichen und wollte euch deshalb fragen, ob ihr mir Tips geben könntet, wie ich weitermachen muss, um zu dem gewünschten Ergebnis zu kommen. Wo muss ich mich einlesen, was muss ich alles wissen und wie fange ich am besten an.
Und bitte sagt jetzt nicht sowas wie: "Lerne erstmal programmieren..."
Da kann ich nichts mit anfangen. Ich bin gerade dabei mich in die Tiefen von C++ einzuarbeiten und brauche jetzt Hilfen wie ich mich auf diesen Themen Bereich fokussieren kann...Vielen Dank im Voraus
jawo3
-
Wenn die Frage zu umfangreich ist, würde ich mich riesig freuen, wenn ihr mir zumindest etwas näher bringen könntet, wie ich in C++ Bilder so analysieren kann, dass ich herausfinde welche Farbe das Bild hat. Das wäre super!
Vielen Dank
jawo3
-
also ein ganz naiver ansatz wäre doch folgender:
vorraussetzung: du kannst du pixel deines bildes lesen:
Bilde für jeden Farbkanal den Durschnitt oder Median und setze die Farbe daraus zusammen. Je nachdem, was das dann für eine Farbe ist, gibst du das Wort aus.
zum webcam auslesen wird meistens DirectShow vorgeschlagen (glaub ich). Musst mal hier im forum suchen nach webcam etc.
btw: das wird ein schwieriges Projekt, vor allem der directshow-teil
-
Weißt du wo ich mich genauer über DirectShow schlau machen kann?
Ein Link wäre super...Ich weiß leider auch noch nicht wie ich einzelne Pixel auslese, kannst du mir da ein bisschen auf die Sprünge helfen, wo ich mich da weiter informieren kann und nach was ich suchen soll?
-
kennst du google?
wenn du das Problem hast, wie du mit directshow auf deine webcam zugreifen kannst, dann gib doch einfach mal directshow+webcam bei google ein?
einzelne pixel auslesen kommt dann von alleine, musst du ja zwangsläufig, wenn du die bilder von der webcam lesen willst.
-
Hi,
Also das reicht schon um ein simples Fenster zu erstellen mit deinem Webcam bild (also zumindest funktioniert es bei mir ;))#include <windows.h> #include <vfw.h> #include "resource.h" BOOL CALLBACK DialogProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { return DialogBox (hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc); } BOOL CALLBACK DialogProc (HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) { HWND hwndVideo; int iIndex=0; switch(msg) { case WM_INITDIALOG: hwndVideo = capCreateCaptureWindow("name", WS_CHILD | WS_VISIBLE, 10, 10, 400, 400, hdlg, (int) 1); if (!capDriverConnect (hwndVideo, iIndex)) { MessageBox(NULL, "Treiber für die Webcam kann nicht geladen werden...","Fehler", MB_OK); return TRUE; } capPreviewRate(hwndVideo, 1); capPreview(hwndVideo, TRUE); return (TRUE); case WM_DESTROY: case WM_CLOSE: // Hier wird der Dialog geschlossen EndDialog(hdlg,0); return (TRUE); case WM_COMMAND: // Hier werden die beiden Buttons, vom Standard-Dialog // des MS Visual Studio Resourcengenerators abgefragt. switch (LOWORD(wParam)) { case IDCANCEL: EndDialog(hdlg,0); return (TRUE); case IDOK: Beep (1000,1000); return (TRUE); default: break; } return (FALSE); } return (FALSE); }
schirrmie
-
ich glaube ich hab hier mal mittels suche im winapi oder mfc forum was dazu gefunden, dann nur copy&paste und ich hab meine cam ausgelesen.