Hallo,
ich weiß einfach nicht mehr weiter.
Habe folgendes Problem. Ich will ein Programm, das mir aus einer festgelegten Videoquelle (in meinem Falle eine Webcam) ein Bild (Format egal) generiert. Keine Fenster, keine Buttons.
Ich habe einen Haufen Informationen gefunden. Ich bekomme es auch hin, das Livebild auf dem Bildschirm anzuzeigen. Das habe ich auch schon in eine Datei speichern können. Aber nur mit Hilfe der Zwischenablage.
Und deren Inhalt darf leider nicht beeinträchtigt werden.
Hat da jemand einen 5Zeiler oder einen Rat für mich? Egal, ob mit Hilfe der avicap lib oder avicap32.dll
Danke
Eric
Bild aus Videoquelle speichern
vielleicht hilft Dir http://forums.purebasic.com/german/view ... 2508#42508 weiter
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."
Es gibt keine Vista-Witze. Es ist alles wahr!
Es gibt keine Vista-Witze. Es ist alles wahr!
Danke. Das klingt wirklich gut. Nur bin ich in PB garnicht gut. Für viele andere Sprachen findet man ja wenigstens einige Sources wo man abkucken kann. Kann mir einer dabei helfen, das zu realisieren???
Das ist doch sicher nur eine Zeile die ich in das Programm einbauen muß. Nur waren meine letzen 3 Stunden da leider nicht sehr produktiv.
Unten ist das, was ich bis jetzt habe. Ist ebenfalls hier aus dem Forum.
Nur brauche ich das Vorschaufenster nicht und es soll wie gesagt ohne die Zwischenablage gehen.
Habt bitte erbarmen und helft mir da bitte irgendwie weiter. Bin an einem Totpunkt angekommen.
Danke
Eric
#WM_CAP_START = #WM_USER
#WM_CAP_SET_CALLBACK_ERROR = #WM_CAP_START + 2
#WM_CAP_SET_CALLBACK_STATUS = #WM_CAP_START + 3
#WM_CAP_SET_CALLBACK_YIELD = #WM_CAP_START + 4
#WM_CAP_SET_CALLBACK_FRAME = #WM_CAP_START + 5
#WM_CAP_SET_CALLBACK_VIDEOSTREAM = #WM_CAP_START + 6
#WM_CAP_SET_CALLBACK_WAVESTREAM = #WM_CAP_START + 7
#WM_CAP_DRIVER_CONNECT = #WM_USER + 10
#WM_CAP_DRIVER_DISCONNECT = #WM_USER + 11
#WM_CAP_DRIVER_GET_CAPS = #WM_CAP_START + 14
#WM_CAP_DLG_VIDEOFORMAT = #WM_CAP_START + 41
#WM_CAP_DLG_VIDEOSOURCE = #WM_CAP_START + 42
#WM_CAP_DLG_VIDEODISPLAY = #WM_CAP_START + 43
#WM_CAP_SET_PREVIEW = #WM_CAP_START + 50
#WM_CAP_SET_PREVIEWRATE = #WM_CAP_START + 52
#WM_CAP_GET_STATUS = #WM_CAP_START + 54
#WM_CAP_FILE_SAVEDIB = #WM_USER + 25
#WM_CAP_SET_SCALE = #WM_USER + 53
#WM_CAP_SET_CALLBACK_CAPCONTROL = #WM_CAP_START + 85
hWnd = OpenWindow(0, 0, 0, 400, 400, #PB_Window_SystemMenu, "WebCamTest")
CreateGadgetList(WindowID())
If OpenLibrary(0, "AVICAP32.DLL")
hWebcam = CallFunction(0, "capCreateCaptureWindowA", "", #WS_VISIBLE + #WS_CHILD, 10, 10, 380, 380, hwnd, 0)
SendMessage_(hWebcam, #WM_CAP_DRIVER_CONNECT , 0 , 0)
SendMessage_(hWebcam, #WM_CAP_SET_SCALE , 1 , 0)
SendMessage_(hWebcam, #WM_CAP_SET_PREVIEWRATE , 1 , 0)
SendMessage_(hWebcam, #WM_CAP_SET_PREVIEW , 1 , 0)
SendMessage_(hwebcam, #WM_CAP_FILE_SAVEDIB , 1 , 0)
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
SendMessage_(hWebcam, #WM_CAP_SET_PREVIEW , 0, 0)
SendMessage_(hWebcam, #WM_CAP_DRIVER_DISCONNECT, "BLUBBER", 0)
CloseWindow(0)
CloseLibrary(0)
EndIf
End
; ExecutableFormat=Windows
; EOF
Das ist doch sicher nur eine Zeile die ich in das Programm einbauen muß. Nur waren meine letzen 3 Stunden da leider nicht sehr produktiv.

Unten ist das, was ich bis jetzt habe. Ist ebenfalls hier aus dem Forum.
Nur brauche ich das Vorschaufenster nicht und es soll wie gesagt ohne die Zwischenablage gehen.
Habt bitte erbarmen und helft mir da bitte irgendwie weiter. Bin an einem Totpunkt angekommen.
Danke
Eric
#WM_CAP_START = #WM_USER
#WM_CAP_SET_CALLBACK_ERROR = #WM_CAP_START + 2
#WM_CAP_SET_CALLBACK_STATUS = #WM_CAP_START + 3
#WM_CAP_SET_CALLBACK_YIELD = #WM_CAP_START + 4
#WM_CAP_SET_CALLBACK_FRAME = #WM_CAP_START + 5
#WM_CAP_SET_CALLBACK_VIDEOSTREAM = #WM_CAP_START + 6
#WM_CAP_SET_CALLBACK_WAVESTREAM = #WM_CAP_START + 7
#WM_CAP_DRIVER_CONNECT = #WM_USER + 10
#WM_CAP_DRIVER_DISCONNECT = #WM_USER + 11
#WM_CAP_DRIVER_GET_CAPS = #WM_CAP_START + 14
#WM_CAP_DLG_VIDEOFORMAT = #WM_CAP_START + 41
#WM_CAP_DLG_VIDEOSOURCE = #WM_CAP_START + 42
#WM_CAP_DLG_VIDEODISPLAY = #WM_CAP_START + 43
#WM_CAP_SET_PREVIEW = #WM_CAP_START + 50
#WM_CAP_SET_PREVIEWRATE = #WM_CAP_START + 52
#WM_CAP_GET_STATUS = #WM_CAP_START + 54
#WM_CAP_FILE_SAVEDIB = #WM_USER + 25
#WM_CAP_SET_SCALE = #WM_USER + 53
#WM_CAP_SET_CALLBACK_CAPCONTROL = #WM_CAP_START + 85
hWnd = OpenWindow(0, 0, 0, 400, 400, #PB_Window_SystemMenu, "WebCamTest")
CreateGadgetList(WindowID())
If OpenLibrary(0, "AVICAP32.DLL")
hWebcam = CallFunction(0, "capCreateCaptureWindowA", "", #WS_VISIBLE + #WS_CHILD, 10, 10, 380, 380, hwnd, 0)
SendMessage_(hWebcam, #WM_CAP_DRIVER_CONNECT , 0 , 0)
SendMessage_(hWebcam, #WM_CAP_SET_SCALE , 1 , 0)
SendMessage_(hWebcam, #WM_CAP_SET_PREVIEWRATE , 1 , 0)
SendMessage_(hWebcam, #WM_CAP_SET_PREVIEW , 1 , 0)
SendMessage_(hwebcam, #WM_CAP_FILE_SAVEDIB , 1 , 0)
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
SendMessage_(hWebcam, #WM_CAP_SET_PREVIEW , 0, 0)
SendMessage_(hWebcam, #WM_CAP_DRIVER_DISCONNECT, "BLUBBER", 0)
CloseWindow(0)
CloseLibrary(0)
EndIf
End
; ExecutableFormat=Windows
; EOF
schick mal ein
das sollte in der Theorie (in der Praxis gerade keine Webcam angeschlossen...) ein Bild in die Zwischenablage speichern (BMP-Format!).
Kannst Du dann mit
aus dem Clipboard holen und weiterverwursten. Im Beispiel speichere ich es als BMP-Datei ab.
Nur mal Quick und Dirty, probiers mal aus!
Code: Alles auswählen
SendMessage_(hwebcam, #WM_CAP_COPY_EDIT ,0 , 0)
Kannst Du dann mit
Code: Alles auswählen
CreateImage(0, 1024,768)
If StartDrawing(ImageOutput())
hbm = GetClipboardData(#PB_ClipboardImage)
If hbm
DrawImage(hbm,0,0,1024,768)
StopDrawing()
SaveImage(0, "C:\test.bmp")
Debug "gespeichert"
Else
Debug "nix im Clipboard"
EndIf
EndIf
aus dem Clipboard holen und weiterverwursten. Im Beispiel speichere ich es als BMP-Datei ab.
Nur mal Quick und Dirty, probiers mal aus!
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."
Es gibt keine Vista-Witze. Es ist alles wahr!
Es gibt keine Vista-Witze. Es ist alles wahr!
Hallo stbi,
danke, aber das ging leider auch nicht. Es kommt einfach nichts in der Zwischenablage an. Kann das mal jemand anderes ausprobieren? Nicht das mein Computer einfach nur eine Abneigung gegen mich hat.
Andererseits hab ich das jetzt auch schon auf einem W2K versucht. Das selbe Ergebnis.
Hat jemand das mit der AVICAP Library schonmal gemacht? Vielleicht ist die ja etwas kooperativer.
Gruß
Eric
danke, aber das ging leider auch nicht. Es kommt einfach nichts in der Zwischenablage an. Kann das mal jemand anderes ausprobieren? Nicht das mein Computer einfach nur eine Abneigung gegen mich hat.
Andererseits hab ich das jetzt auch schon auf einem W2K versucht. Das selbe Ergebnis.
Hat jemand das mit der AVICAP Library schonmal gemacht? Vielleicht ist die ja etwas kooperativer.
Gruß
Eric