[CWaL] Webcam Library für Purebasic :o)

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

...oder eine Dokumentation?
Benutzeravatar
dige
Beiträge: 1236
Registriert: 08.09.2004 08:53

Beitrag von dige »

Würde mich auch interessieren
"Papa, ich laufe schneller - dann ist es nicht so weit."
wasser
Beiträge: 125
Registriert: 27.11.2006 21:16

Beitrag von wasser »

Demo zum Spielen. (Pure 4...)

#WM_CAP_EDIT_COPY legt das Bild in die Ablage.

Damit kannste ein Bild in die Ablage legen und von da auf den Bildschirm bringen.

Wenn du das änderst, kannste das Bild auch als "bmp" abspeichern.

PS: ich nehme ungerne eine Lib, weil ich nicht sehen kann wie so etwas abläuft.


MFG

Code: Alles auswählen


IncludeFile "capture-inc.pb"

#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_CAP_START + 10
#WM_CAP_DRIVER_DISCONNECT = #WM_CAP_START + 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_CAP_START + 25
#WM_CAP_SET_SCALE = #WM_CAP_START + 53
#WM_CAP_SET_CALLBACK_CAPCONTROL = #WM_CAP_START + 85
#WM_CAP_EDIT_COPY = #WM_CAP_START + 30
#WM_CAP_GRAB_FRAME = #WM_CAP_START+60

Open_Window_0()
OpenLibrary(0, "AVICAP32.DLL")

hRobby = CallFunction(0, "capCreateCaptureWindowA", "Test", #WS_VISIBLE + #WS_CHILD, 1, 1, 1, 1, hWnd, 0)
SendMessage_(hRobby, #WM_CAP_DRIVER_CONNECT, 0 , 0) 

Repeat ; Start of the event loop
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  
  GadgetID = EventGadget() ; Is it a gadget event?
  
  EventType = EventType() ; The event type
  
  ;You can place code here, and use the result as parameters for the procedures
  
  If Event = #PB_Event_Gadget
    
    If GadgetID = #Button_0
      SendMessage_(hRobby, #WM_CAP_GRAB_FRAME, 0 , 0)
      SendMessage_(hRobby, #WM_CAP_EDIT_COPY, 0 , 0)
      Link = GetClipboardImage(#PB_Clipboard_Image)
      If Link <> 0        
        StartDrawing( WindowOutput(0) )
        DrawImage(Link, 120,10,300, 280) 
        StopDrawing()
      EndIf
    EndIf
    
  EndIf
  
  Delay(1)
  
Until Event = #PB_Event_CloseWindow ; End of the event loop

SendMessage_(hRobby, #WM_CAP_SET_PREVIEW, 0, 0)
SendMessage_(hRobby, #WM_CAP_DRIVER_DISCONNECT, "Test", 0)
CloseWindow(0)
CloseLibrary(0)

End
;

die capture-inc.pb:

Code: Alles auswählen

; PureBasic Visual Designer v3.92 build 1460


;- Window Constants

Global hWnd
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
EndEnumeration


Procedure Open_Window_0()
  hWnd=OpenWindow(#Window_0, 0, 0, 450, 320, "Videocapture",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
   CreateImage(#Window_0, 310, 300)
    If CreateGadgetList(WindowID(0))
      ButtonGadget(#Button_0, 15, 35, 70, 25, "schnapp")
      
    EndIf
 
EndProcedure
Zuletzt geändert von wasser am 15.12.2006 00:24, insgesamt 1-mal geändert.
wasser
Beiträge: 125
Registriert: 27.11.2006 21:16

Beitrag von wasser »

Für Pure 4....
Links ist das original Capturebild von der Cam und rechts wird es nach dem Buttonclick im Fenster dargestellt, kann auch nach Abänderung als "bmp" abgespeichert werden.

Code: Alles auswählen

Global hWnd

Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Frame3D_0
  #Frame3D_1
  #Button_0
EndEnumeration

Enumeration
  #ImageGadget_0
EndEnumeration

Procedure Open_Window_0()
  hWnd = OpenWindow(#Window_0, 0, 0, 780, 350,"test",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar)
  CreateGadgetList(WindowID(0))
  ButtonGadget(#Button_0, 20, 40, 65, 25, "schnapp")
EndProcedure 

#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_CAP_START + 10
#WM_CAP_DRIVER_DISCONNECT = #WM_CAP_START + 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_CAP_START + 25
#WM_CAP_SET_SCALE = #WM_CAP_START + 53
#WM_CAP_SET_CALLBACK_CAPCONTROL = #WM_CAP_START + 85
#WM_CAP_EDIT_COPY = #WM_CAP_START + 30
#WM_CAP_GRAB_FRAME = #WM_CAP_START+60

Open_Window_0()
OpenLibrary(0, "AVICAP32.DLL")

hRobby = CallFunction(0, "capCreateCaptureWindowA", "BLUBBER", #WS_VISIBLE + #WS_CHILD, 120, 30, 310, 300, hWnd, 0)
SendMessage_(hRobby, #WM_CAP_DRIVER_CONNECT, 0 , 0)
SendMessage_(hRobby, #WM_CAP_SET_SCALE , 1 , 0)
SendMessage_(hRobby, #WM_CAP_SET_PREVIEWRATE, 50, 0)
SendMessage_(hRobby, #WM_CAP_SET_PREVIEW, 1 , 0)

Repeat ; Start of the event loop
 
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
 
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
 
  GadgetID = EventGadget() ; Is it a gadget event?
 
  EventType = EventType() ; The event type
  
  SendMessage_(hRobby, #WM_CAP_GRAB_FRAME, 0 , 0) 
 
  If Event = #PB_Event_Gadget
    If GadgetID = #Button_0
      SendMessage_(hRobby, #WM_CAP_GRAB_FRAME, 0 , 0)
      SendMessage_(hRobby, #WM_CAP_EDIT_COPY, 0 , 0)
      Link = GetClipboardImage(#PB_Clipboard_Image)
      If Link <> 0        
        StartDrawing( WindowOutput(0) )
        DrawImage(Link, 440,30,300, 300) 
        StopDrawing()
      EndIf
    EndIf
    
  EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop

SendMessage_(hRobby, #WM_CAP_SET_PREVIEW, 0, 0)
SendMessage_(hRobby, #WM_CAP_DRIVER_DISCONNECT, "BLUBBER", 0)
CloseWindow(0)
CloseLibrary(0) 
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Was ist jetzt eigentlich aus der UserLib geworden?

Die Links liefern alle einen 404...
PB 6.21 | Win 11
manunidi
Beiträge: 109
Registriert: 12.04.2006 22:44

Beitrag von manunidi »

gute frage....
Benutzeravatar
Darky
Beiträge: 210
Registriert: 18.09.2004 20:53
Wohnort: Gelsenkirchen / NRW
Kontaktdaten:

Beitrag von Darky »

Die Camlibrary wurde zuende entwickelt funktioniert aber nur mit älteren Purebasic versionen irgendwie ....


ich habe ab nächste woche urlaub da werde ich mal zusehen das ich sie auf pb4 niveau hochschraube und hier verfügbar mache...

übrigens, es wurd still hier im forum was den entwicklungsfortschritt der cam angeht, weil mein server gehackt wurde und ich nach mangelndem support entschied den anbieter zu wechseln was aber leider bisher noch nicht geschehen ist... von daher kein server = kein upload :(

werd zusehen wo ich es hochladen kann... wobei die tage müsste ich wieder einen vernünftigen server haben .


in dem Sinne

Gruß
Darky
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

Hi, Darky,

Empfehlung: Nehm Ohost. Da hast du 2500 MB Webspace, PHP, MySQL, ... KOSTENLOS!

Falls das nichts ist, viel Glück bei der "Webspace-Suche"
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Antworten