Webcam ansteuern
-
Hallo allesamt.
Ich denke, dieses Thema wurde schon oft angerissen. Deshalb habe ich mich an ne Suchmaschine gesetzt und das gefunden: http://www.ap.dyndns.dk/software.htm
Überall wurde auf diese nicht existierende Seite verlinkt.Als TotalNoob suche ich eine einfache Möglichkeit, eine Webcam anzusteuern. Eine Ausgabe des Bildes wäre nicht schlecht, hauptsache ich habe eine Bilddatei irgendwie im Arbeitsspeicher, so dass ich sie auslesen kann.
Leider weiß ich nicht, wie ich da vorgehen muss, was ich dafür benötige. Mit dem Grafikzeug von Win komme ich nicht zurecht, ich weiß nichtmal, warum man GDI und sowas braucht, obwohl DirextX existiert und so.
Kann mit hier einer helfen?
Und dann hätte ich noch eine simple Frage zu ASM: Ich möchte gerne Assembler nutzen, bei meinem Projektchen, Inlineassembler scheidet bei meinem Compiler wegen des AT&T-Syntaxes aus. Welche anderen Möglichkeiten habe ich? Muss ich ne DLL erstellen, oder geht das direkter?
Mfg PowerProgrammer
PS: Ich finde es wirklich gut, dass man hier auch als unregistrierter mit seinen Problemen ankommen kann:) Aber leider ist das Forum hier sehr unübersichtlich, puh. Deshalb weiß ich nicht, ob ich hier richtig bin...
-
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.
-
Jo ist eine einfache Geschichte mit Video for Windows, kurz VfW, und genau diese Header Datei brauchst du (enthalten in der SDK) vfw.h
Windows hällt dazu viele nützlich und einfache Sachen zum Capturen bereit.
Du erstellst einfach ein Capture Window, und giebts das Parent an wo es hin soll:
capHwnd = capCreateCaptureWindow((LPCSTR)"capwin",WS_CHILD | WS_VISIBLE,5,5,320,240,(HWND)ParentHwnd,(int)11011);Dann übereicht man dem CapWindow eine Callback Funktion, die bei jedem Frame aufgerufen wird:
capSetCallbackOnFrame(capHwnd, FrameCallbackProc);Tja, und in deiner Callback Funktion kannst du dann immer auf die Daten des Bildes zugreifen:
LRESULT CALLBACK FrameCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr) { char* capPointer = lpVHdr->lpData; //-- capPointer zeigt auf die Framedaten }Solltes du änderung am Bild durchführen in dieser Funktion, so ist das auch im Videofenster zu sehen, da erst die Callback Funktion aufgerufen wird, bevor das Videobild gemalt wird.
Quelle, Videogröße etc. PP, werden durch einige weitere Messages aufgerufen, also dessen Dialoge:
WM_CAP_DLG_VIDEOSOURCE
WM_CAP_DLG_VIDEOFORMAT
etc...Wenn ich mich nicht Täusche, gibts glaub ich bei CodeProjekt ein Tutorial oder Beispiel dafür.
Und schau die diese Sache in der MSDN an, ist sehr gut und ausfürlich dort Beschrieben
-
Vielen Dank, theoretisch müsste das ja klappen, in der MSDN habe ich auch schon etwas gefunden: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_using_video_capture.asp
Leider gibt es da ein kleines Problem. Ich habe mal die vfw.h durchsucht, dort gibt es keine capCreateCaptureWindow-Funktion, entsprechend zeigt mir der Compiler (MINGW/GPP, oder was Dev-Cpp da auch immer hat) den Fehler
64 C:\Arafat\CppZeugs\Webcam\main.cpp `capCreateCaptureWindow' undeclared (first use this function)an.
Warum ist das so, liegt das an dem Compiler? Ist die Headerdatei unvollständig?
Leider bin ich ein Noob und kenne mich nicht so aus, dass ich das Problemlos machen könnte. Ich kenne sozusagen meine 3 Befehle und weiß leider nicht, was ich in so einem Fall machen soll. Da bekomme ich wohl hier die meiste Hilfe

Mfg PowerProgrammer
Achja: Was ist CodeProjekt?
-
Vielleicht ist es etwas zu viel verlangt, aber kann mir jemand sagen, wo man in der
C++-Szene einfache aber vollständige, kleine Quelltexte findet, wo auch ein Skript Webcamansteuerung zu finden ist?Oder gibt es einfach eine Klasse, die das alles einfacher macht?
Für Profis, wie ihr es ja seid, sollte es wohl nicht schwer sein, eine Webcam zu nutzen, aber ich bin nicht so weit. Ich habe auch keine Ahnung, wo die Anlaufstellen bei solchen Problemen in der C++-Welt ist.
Für mich ist C++ vorallem neuland, weil es verschiedenste Compiler und so gibt, und alles variiert, damit komme ich noch nicht klar.
-
Hast du wie unter:
http://msdn2.microsoft.com/en-us/library/ms707166.aspx
angegeben die vfw.h und vfw32.lib (heisst bei mingw glaube ich etwas anders, k.A.) eingebunden?
-
Bei Dev-Cpp liegen leider keine .lib-Dateien bei. Das einzige, was ich gefunden habe, ist eine libvfw32.h im LIB-Ordner, die wird es wohl sein. Aber wie binde ich sowas ein. Per Include sagt der mir, dass er die Datei nicht gefunden hat. Wie kann ich dem Teil sagen, dass er die Datei im Lib-Ordner finden soll?
Oder bindet man Libs nicht per include ein?
Ich habe Null Ahnung von einzubindenem Zeug, kennt ihr ein gutes Tutorial, wo drin steht, was der Unterschied zwischen Libs und Headern ist und wie man die verwendet?
-
Glaube der MinGW (und DevC++ sowieso) wird nicht mehr mit aktuellen Headern versorgt.
-
Hi !
Ich habe Null Ahnung von einzubindenem Zeug, kennt ihr ein gutes Tutorial, wo drin steht, was der Unterschied zwischen Libs und Headern ist und wie man die verwendet?
Hehe, dazu habe ich ein Tutorial auf meiner Homepage veröffentlicht, schau einfach mal unter "Tutorials"

(bzw. wie man libs einbindet)
MfG mikey.