IcamPlay et Purebasic....VMMBasic ??????

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

j'ai trouvé ce code sur le forum anglais ... mais ça marche toujours pas chez moi

Code : Tout sélectionner

Procedure VideoStreamCallback (lwnd.l, lpVHdr.l) 


LoadSound(1,"c:\program files\purebasic\No touch\lazer.wav") 

iCamVideoStreamCallback(lwnd.l,lpVHdr.l) 

iCamGetMotion() 

ImageID=iCamGetWebcamImageID() 



;MotionZones return #true or #false 
Pushed=iCamCheckMotionZone(@CheckZone) 
Pushed2=iCamCheckMotionZone(@NewZone(0)) 

; Draw the webcam image 
StartDrawing(ScreenOutput()) 
DrawImage(ImageID,0,0,800,600) 
StopDrawing() 
FlipBuffers() 
ClearScreen(0,0,0) 

EndProcedure 
If iCamInitLibrary() 

; This address will contain 1 when users hits Escape to exit 
iCamSetDisconnectAddress(@Quit.b) 

; Use CPU intensive mode 
iCamCPUMode(1) 

; Init capture and open select driver window 
If iCamInitCapture(0) 

; Gets the width and height of webcam image 
; and set Screen design To resize Check Zones automaticly 
iCamGetCapSize(@CapSize) 


GameDesignWidth=176 : GameDesignHeight=144 
GamePlayWidth=CapSize\Width*Zoom : GamePlayHeight=CapSize\Height*Zoom 
iCamScreenDesign(GameDesignWidth,GameDesignHeight) 

If OpenWindow(1,100,100,CapSize\Width*Zoom,CapSize\Height*Zoom,0,"iCamPlay zone check example") 
OpenWindowedScreen(WindowID(),0,0,CapSize\Width*Zoom,CapSize\Height*Zoom,0,0,0) 

; Enable mirror mode 
iCamSetMirror(#True) 
; 
; Set motion detection options 
MotionDetection\MotionState=#True 
MotionDetection\MotionTrackingValue=50 
MotionDetection\MotionLimited=#False 
iCamSetMotionDetection(@MotionDetection) 

; Set motion divisor 
iCamMotionDivisor(2) 

LoadGraphics();Graphics.pb 

; Set video stream callback procedure address 
iCamSetCallbackAddress(@VideoStreamCallback()) 

Repeat 

Event= WaitWindowEvent() 

Until Quit=1 

; Set callback address as NULL 
iCamSetCallbackAddress(#NULL) 

; Close capture driver 
iCamClose() 
CloseWindow(0) 
EndIf 
EndIf 
EndIf 
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

a tu lu ce topic depuis le debut ?

a tu telechargé a partir de mon lien la dll et les exemple en purebasic qui vont avec ??
a une epoque j'ai recuperé une dll et des exemple en purebasic pour la capture video

comme je suis un mec cool , je vous met un zip a dispo
par contre les fichiers sont dans leur jus , a vous de voir ce que vous en ferez Very Happy

http://michel.dobro.free.fr/camera/capture_camera.zip
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Merci Dobro j'ai bien téléchargé ton archive mais je coince dessus !
En vérité je voudrais juste pouvoir faire un truc tout simple du genre

Code : Tout sélectionner

repeat 
  lecture de l'image de la webcam que je copie dans le sprite 0
  Affiche le sprite 0
  flipbuffer

until machin truc
le pb avec les API windows c'est que je nage completement avec si j'ai un exemple je m'en sort...mais je n'arrive jammais a trouver par moi même les commandes API qui vont bien pourtant je cherche sur msdn !

Et puis je voudrais faire ça pas dans une fenetre mais dans un ecran !
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Il ne faut pas oublier d'installer les drviers de ta webcam, pas se contenter de ceux de windows
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Il ne faut pas oublier d'installer les drviers de ta webcam, pas se contenter de ceux de windows
il s'agit pourtant bien des drivers fournit par le constructeur (creative dans mon cas)
:cry:
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

On m'avait prété une webcam pendant 2-3 jours et en installant les drivers c'était passé :?:
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

de mon côté j'ai essayé de me concentrer sur la dll icamplay car normalement elle est déjà prévu pour être utiliser dans des jeux et a déjà la motion detection et autre truc utile pour faire un jeu style eyetoy
Helas je n'arrive pas a grand chose ...et ça plante toujours ...
Mais voici ce que ça donne (vous pouvez télécharger la libs icamplay.dll grace a un lien donné au debut de ce sujet je crois !)

Code : Tout sélectionner

Global screen_width
Global screen_height
Global screen_depth
screen_width = 640
screen_height = 480
screen_depth = 16
#Mode_initSp = 2
#window=0
Procedure InitScreen()
  ;- Init DirectX
  If InitSprite() = 0 Or InitSprite3D() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 Or InitSound() = 0
    MessageRequester("Erreur", "Impossible d'initialiser DirectX", 0)
    CloseWindow(#Window) : End
  EndIf
  
  If #Mode_initSp = 0 Or #Mode_initSp = 1
    res = OpenWindow(#Window, 0, 0, screen_width, screen_height, #PB_Window_TitleBar | #PB_Window_ScreenCentered, "Test")
    OpenWindowedScreen(res, 0, 0, screen_width, screen_height, 0, 0, 0)
  Else
    OpenScreen( screen_width, screen_height, screen_depth, "Arcadthy" + ver$ )
  EndIf
  UsePNGImageDecoder()
  UseJPEGImageDecoder()
  TransparentSpriteColor(-1, 255, 0, 255)
EndProcedure

Procedure FatalError (error$)
    If error$ = "": error$ = "Undefined error... outta here!": EndIf
    MessageRequester ("Program error -- aborting...", error$, #MB_ICONWARNING | #MB_SYSTEMMODAL)
    End
EndProcedure

Procedure OpenicamplayLibrary ()
    If OpenLibrary (0, "icamplay.dll") = 0
        FatalError ("Can't open icamplay.dll!")
    Else
      nb = CountLibraryFunctions(0) 
      Debug "Nb fonction:"+Str(nb)
      If ExamineLibraryFunctions(0)<>0
        While NextLibraryFunction()<>0
        Debug  LibraryFunctionName() 
        Wend 
      EndIf  
    EndIf
    
EndProcedure

Procedure  iCamInitWindow(icamMode.l,icamMenu.l) 
    ProcedureReturn CallFunction (0, "iCamInitWindow", icamMode, icamMenu)
EndProcedure

Procedure iCamSelectDriver()
    ProcedureReturn CallFunction (0, "iCamSelectDriver")
EndProcedure
 
Procedure iCamCaptureFormat() 
    ProcedureReturn CallFunction (0, "iCamCaptureFormat")
EndProcedure

Procedure iCamCaptureDisplay() 
    ProcedureReturn CallFunction (0, "iCamCaptureDisplay")
EndProcedure

Procedure iCamGetMotion() 
    ProcedureReturn CallFunction (0, "iCamGetMotion")
EndProcedure

Procedure.l iCamGetWebcamImage() 
    ProcedureReturn CallFunction (0, " iCamGetWebcamImage")
EndProcedure


OpenicamplayLibrary ()
iCamInitWindow(#True,#True) 
InitScreen()
  Repeat ; Jeu
  
  ClearScreen(0, 0, 0)
  ExamineKeyboard()
  iCamGetMotion() 
  ImageID=iCamGetWebcamImage() 
  Debug "id:"+Str(ImageID)
  StartDrawing(ScreenOutput())
  DrawImage(ImageID,1,1)
  StopDrawing()
    FlipBuffers(0)
  If #Mode_initSp = 0 Or #Mode_initSp = 1
    While WindowEvent() : Wend ; evite le plantage clic gauche
  EndIf
Until KeyboardPushed(#PB_Key_Tab)
CloseLibrary(0)
Si quelqu'un trouve l'erreur
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Tu devrais déjà réécrire le code en testant le résultat de chaque fonction Purebasic et en affichant une fenêtre lorsque la fonction échoue, ça devrait te permettre de voir d'ou vient le problème.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

J'avance a tout petit pas ...déjà ça ne plante plus...et on trouve une image...même si cette dernière est toute noir !!!
Pouvez vous essayer ce code :

Code : Tout sélectionner

Global screen_width
Global screen_height
Global screen_depth
screen_width = 640
screen_height = 480
screen_depth = 16
#Mode_initSp = 2
#window = 0
Procedure InitScreen()
  ;- Init DirectX
  If InitSprite() = 0 Or InitSprite3D() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 Or InitSound() = 0
    MessageRequester("Erreur", "Impossible d'initialiser DirectX", 0)
    CloseWindow(#Window) : End
  EndIf
  
  If #Mode_initSp = 0 Or #Mode_initSp = 1
    res = OpenWindow(#Window, 0, 0, screen_width, screen_height, #PB_Window_TitleBar | #PB_Window_ScreenCentered, "Test")
    OpenWindowedScreen(res, 0, 0, screen_width, screen_height, 0, 0, 0)
  Else
    OpenScreen( screen_width, screen_height, screen_depth, "Arcadthy" + ver$ )
  EndIf
  UsePNGImageDecoder()
  UseJPEGImageDecoder()
  TransparentSpriteColor(-1, 255, 0, 255)
EndProcedure

Procedure FatalError (error$)
  If error$ = "" : error$ = "Undefined error... outta here!" : EndIf
  MessageRequester ("Program error -- aborting...", error$, #MB_ICONWARNING | #MB_SYSTEMMODAL)
  End
EndProcedure

Procedure OpenicamplayLibrary ()
  If OpenLibrary (0, "icamplay.dll") = 0
    FatalError ("Can't open icamplay.dll!")
  Else
    nb = CountLibraryFunctions(0)
    Debug "Nb fonction:" + Str(nb)
    If ExamineLibraryFunctions(0) <> 0
      While NextLibraryFunction() <> 0
        Debug LibraryFunctionName()
      Wend
    EndIf
  EndIf
  
EndProcedure

Procedure iCamInitWindow(icamMode.l, icamMenu.l)
  ProcedureReturn CallFunction (0, "iCamInitWindow", icamMode, icamMenu)
EndProcedure

Procedure iCamSelectDriver()
  ProcedureReturn CallFunction (0, "iCamSelectDriver")
EndProcedure

Procedure iCamCaptureFormat()
  ProcedureReturn CallFunction (0, "iCamCaptureFormat")
EndProcedure

Procedure iCamCaptureDisplay()
  ProcedureReturn CallFunction (0, "iCamCaptureDisplay")
EndProcedure

Procedure iCamGetMotion()
  ProcedureReturn CallFunction (0, "iCamGetMotion")
EndProcedure

Procedure.l iCamGetWebcamImage()
  ProcedureReturn CallFunction (0, "iCamGetWebcamImage")
EndProcedure

Procedure iCamPreviewRate(fps.l)
  ProcedureReturn CallFunction (0, "iCamPreviewRate", fps)
EndProcedure

OpenicamplayLibrary ()
Debug iCamInitWindow(#False, #False)
iCamPreviewRate(15)
InitScreen()
CreateImage(1,320,200)
UseImage(1)
StartDrawing(ImageOutput())
Box(1,1,320,200,RGB(255,0,0))
StopDrawing()
iCamGetMotion()
Repeat ; Jeu
  ClearScreen(120, 120, 120)
  ExamineKeyboard()
  
  ImageID = iCamGetWebcamImage()
  Debug "id:" + Str(ImageID)
  StartDrawing(ScreenOutput())
    ;CatchImage(1,ImageID)
    DrawImage(UseImage(1),50,50)
    DrawImage(ImageID, 1, 1)
  StopDrawing()
  FlipBuffers(0)
  Delay(100)
  If #Mode_initSp = 0 Or #Mode_initSp = 1
    While WindowEvent() : Wend ; evite le plantage clic gauche
  EndIf
Until KeyboardPushed(#PB_Key_Tab)
CloseScreen()
CloseLibrary(0)
End
je pense qu'on est plus tres loin d'avoir quelques choses...mais faut continuer a chercher
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Tu as oublier une fonction obligatoire :
iCamEvent()

Syntax

Result = iCamEvent(#Focus)
Description

This instruction must be called on the main loop, if isnt executed, the rest wont work correctly, when #Focus is True, the capture window its activated automaticly, if its False you can handle better the events of your windows, result contain the menu id item execute your code after a menu item was selected if menu is enabled.


Misc - Index
Le problème c'est que chez moi elle fait tout planter. Je vais envoyer un mail à l'auteur, sur le forum de PB il a l'air sympatique, sinon je vais le faire moi même :twisted:
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

j'ai déjà essayé de le contacter 2 fois mais jamais eu de reponse !! :(
remarque peut être que mon Anglais lui a fait peur :lol: et encore il a de la chance je lui ai pas ecrit en Espagnol :wink: (je crois qu'il est d'origine espagnol)

Je vais essayer icamevent chez moi je te dis si ça plante ou pas ...
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

chez moi la commande ne plante pas mais ça ne fait rien
par contre mon code fait planter le debugger lorsque je quitte ! ça fait pareille chez toi ?
Et autre chose curieuse l'ID que je récupère avec

Code : Tout sélectionner

ImageID = iCamGetWebcamImage()
est négatif ....curieux ...

et j'ai aussi un problème avec la structure
MotionDetection
si je retire les ";" lorsque je donne les valeurs aux variable ça ne marche pas....il me dit que la structure n'est pas definit ... :(
voilà ou j'en suis apres des heures et des heures de test dans tout les sens :wink:

Tient voici la dernière version de mon code :

Code : Tout sélectionner

Global screen_width
Global screen_height
Global screen_depth
screen_width = 640
screen_height = 480
screen_depth = 16
#Mode_initSp = 2
#window = 0

  Structure MotionDetection
    MotionState.l
    MotionTrackingValue.l
    MotionLimited.l
  EndStructure


Procedure InitScreen()
  ;- Init DirectX
  If InitSprite() = 0 Or InitSprite3D() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 Or InitSound() = 0
    MessageRequester("Erreur", "Impossible d'initialiser DirectX", 0)
    CloseWindow(#Window) : End
  EndIf
  
  If #Mode_initSp = 0 Or #Mode_initSp = 1
    res = OpenWindow(#Window, 0, 0, screen_width, screen_height, #PB_Window_TitleBar | #PB_Window_ScreenCentered, "Test")
    OpenWindowedScreen(res, 0, 0, screen_width, screen_height, 0, 0, 0)
  Else
    OpenScreen( screen_width, screen_height, screen_depth, "Arcadthy" + ver$ )
  EndIf
  UsePNGImageDecoder()
  UseJPEGImageDecoder()
  TransparentSpriteColor(-1, 255, 0, 255)
EndProcedure

Procedure FatalError (error$)
  If error$ = "" : error$ = "Undefined error... outta here!" : EndIf
  MessageRequester ("Program error -- aborting...", error$, #MB_ICONWARNING | #MB_SYSTEMMODAL)
  End
EndProcedure

Procedure OpenicamplayLibrary ()
  If OpenLibrary (0, "icamplay.dll") = 0
    FatalError ("Can't open icamplay.dll!")
  Else
    nb = CountLibraryFunctions(0)
    Debug "Nb fonction:" + Str(nb)
    If ExamineLibraryFunctions(0) <> 0
      While NextLibraryFunction() <> 0
        Debug LibraryFunctionName()
      Wend
    EndIf
  EndIf
  
EndProcedure

Procedure iCamInitWindow(icamMode.l, icamMenu.l)
  ProcedureReturn CallFunction (0, "iCamInitWindow", icamMode, icamMenu)
EndProcedure

Procedure iCamSelectDriver()
  ProcedureReturn CallFunction (0, "iCamSelectDriver")
EndProcedure

Procedure iCamCaptureFormat()
  ProcedureReturn CallFunction (0, "iCamCaptureFormat")
EndProcedure

Procedure iCamCaptureDisplay()
  ProcedureReturn CallFunction (0, "iCamCaptureDisplay")
EndProcedure

Procedure iCamGetMotion()
  ProcedureReturn CallFunction (0, "iCamGetMotion")
EndProcedure

Procedure.l iCamGetWebcamImage()
  ProcedureReturn CallFunction (0, "iCamGetWebcamImage")
EndProcedure

Procedure iCamPreviewRate(fps.l)
  ProcedureReturn CallFunction (0, "iCamPreviewRate", fps)
EndProcedure

Procedure iCamSetMotionDetection(adr.l)
  ProcedureReturn CallFunction (0, "iCamSetMotionDetection", adr)
EndProcedure

Procedure iCamEvent(focus.l)
  ProcedureReturn CallFunction (0, "iCamEvent", focus)
EndProcedure


OpenicamplayLibrary ()
Debug iCamInitWindow(#False, #False)
iCamPreviewRate(15)
InitScreen()
CreateImage(1, 320, 200)
UseImage(1)
StartDrawing(ImageOutput())
  Box(1, 1, 320, 200, RGB(255, 0, 0))
StopDrawing()
;MotionDetection\MotionState = #True
;MotionDetection\MotionTrackingValue = 50
;MotionDetection\MotionLimited = #False
;iCamSetMotionDetection(@MotionDetection)
iCamGetMotion()
Repeat ; Jeu
  ClearScreen(120, 120, 120)
  ExamineKeyboard()
  iCamEvent(#False)
  ImageID = iCamGetWebcamImage()
  Debug "id:" + Str(ImageID)
  StartDrawing(ScreenOutput())
    ; CatchImage(1,ImageID)
    DrawImage(UseImage(1), 50, 50)
    DrawImage(ImageID, 1, 1)
  StopDrawing()
  FlipBuffers(0)
  Delay(100)
  If #Mode_initSp = 0 Or #Mode_initSp = 1
    While WindowEvent() : Wend ; evite le plantage clic gauche
  EndIf
Until KeyboardPushed(#PB_Key_Tab)
CloseScreen()
CloseLibrary(0)
End
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

ça marche !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
j'ai repris ton code, joué avec et voilà :D :D :D , maintenant, je vais voir pourquoi ça marche :D

Code : Tout sélectionner

Global screen_width 
Global screen_height 
Global screen_depth 
screen_width = 640 
screen_height = 480 
screen_depth = 16 
#Mode_initSp = 0 
#window = 0 
Procedure InitScreen()
  InitSprite()
  OpenWindow(#Window,0,0,screen_width,screen_height,#PB_Window_TitleBar | #PB_Window_ScreenCentered,"Test") 
  OpenWindowedScreen(WindowID(), 0, 0, screen_width, screen_height, 0, 0, 0) 
EndProcedure 

Procedure FatalError (error$) 
  If error$ = "" : error$ = "Undefined error... outta here!" : EndIf 
  MessageRequester ("Program error -- aborting...", error$, #MB_ICONWARNING | #MB_SYSTEMMODAL) 
  End 
EndProcedure 

Procedure OpenicamplayLibrary () 
  If OpenLibrary (0, "icamplay.dll") = 0 
    FatalError ("Can't open icamplay.dll!") 
  Else 
    nb = CountLibraryFunctions(0) 
    Debug "Nb fonction:" + Str(nb) 
    If ExamineLibraryFunctions(0) <> 0 
      While NextLibraryFunction() <> 0 
        Debug LibraryFunctionName() 
      Wend 
    EndIf 
  EndIf 
EndProcedure 

Procedure iCamInitWindow(icamMode.l, icamMenu.l) 
  ProcedureReturn CallFunction (0, "iCamInitWindow", icamMode, icamMenu) 
EndProcedure 

Procedure iCamSelectDriver() 
  ProcedureReturn CallFunction (0, "iCamSelectDriver") 
EndProcedure 

Procedure iCamSetMirror(Flag.b)
  ProcedureReturn CallFunction(0,"iCamSetMirror",Flag)
EndProcedure

Procedure iCamEvent(Focus.b)
  ProcedureReturn CallFunction(0,"iCamEvent")
EndProcedure

Procedure iCamCaptureFormat() 
  ProcedureReturn CallFunction (0, "iCamCaptureFormat") 
EndProcedure 

Procedure iCamCaptureDisplay() 
  ProcedureReturn CallFunction (0, "iCamCaptureDisplay") 
EndProcedure 

Procedure iCamGetMotion() 
  ProcedureReturn CallFunction (0, "iCamGetMotion") 
EndProcedure 

Procedure.l iCamGetWebcamImage() 
  ProcedureReturn CallFunction (0, "iCamGetWebcamImage") 
EndProcedure 

Procedure iCamPreviewRate(fps.l) 
  ProcedureReturn CallFunction (0, "iCamPreviewRate", fps) 
EndProcedure 

OpenicamplayLibrary()
 
Debug iCamInitWindow(#True, #False) 

iCamPreviewRate(30)
iCamSetMirror(#True)

InitScreen() 


CreateImage(1,320,200) 
StartDrawing(ImageOutput()) 
  Box(1,1,320,200,RGB(255,0,0)) 
StopDrawing()

iCamGetMotion()
 
Repeat ; Jeu

  ; Result = iCamEvent(#True)
  ClearScreen(120, 120, 120)  
  
  iCamGetMotion()
  
  ImageID = iCamGetWebcamImage() 
  StartDrawing(ScreenOutput()) 
    ;CatchImage(1,ImageID) 
    DrawImage(UseImage(1),50,50) 
    DrawImage(ImageID, 1, 1) 
  StopDrawing() 
  
  FlipBuffers() 
  
  Delay(100)
   
  Select WindowEvent()
    Case #PB_Event_CloseWindow
      Sortie = 1
  EndSelect ; evite le plantage clic gauche 
   
Until Sortie = 1 
CloseScreen() 
CloseLibrary(0) 
End 
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Genial !! tres bon boulot mon grand !!

reste a comprendre pouquoi !peut être le fait que tu sois en fenêtre et pas en plein ecran ...???

je regarde de mon côté aussi histoire de comprendre
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Vaut mieux étudier ça, c'est plus propre :) . Par contre le debuger aime pas trop et vaut mieux qu'il soit complêtement fermé avant de recompiler

Code : Tout sélectionner

;- Declarations
; Constantes
#Window = 0 

; Structures
Structure Screen
  Width.l
  Height.l
EndStructure

; Listes

; Buffer

; Variables
Sortie.b : Screen.Screen

Global Screen

Screen\Width = 640
Screen\Height = 480








Procedure FatalError (error$) 
  If error$ = "" : error$ = "Undefined error... outta here!" : EndIf 
  MessageRequester ("Program error -- aborting...", error$, #MB_ICONWARNING | #MB_SYSTEMMODAL) 
  End 
EndProcedure 


Procedure iCamInitWindow(icamMode.l, icamMenu.l) 
  ProcedureReturn CallFunction (0, "iCamInitWindow", icamMode, icamMenu) 
EndProcedure 


Procedure iCamSelectDriver() 
  ProcedureReturn CallFunction (0, "iCamSelectDriver") 
EndProcedure 


Procedure iCamSetMirror(Flag.b) 
  ProcedureReturn CallFunction(0,"iCamSetMirror",Flag) 
EndProcedure 


Procedure iCamEvent(Focus.b) 
  ProcedureReturn CallFunction(0,"iCamEvent") 
EndProcedure 


Procedure iCamCaptureFormat() 
  ProcedureReturn CallFunction (0, "iCamCaptureFormat") 
EndProcedure 


Procedure iCamCaptureDisplay() 
  ProcedureReturn CallFunction (0, "iCamCaptureDisplay") 
EndProcedure 


Procedure iCamGetMotion() 
  ProcedureReturn CallFunction (0, "iCamGetMotion") 
EndProcedure 


Procedure.l iCamGetWebcamImage() 
  ProcedureReturn CallFunction (0, "iCamGetWebcamImage") 
EndProcedure 


Procedure iCamPreviewRate(fps.l) 
  ProcedureReturn CallFunction (0, "iCamPreviewRate", fps) 
EndProcedure 



; Fin des procédures ********************************************************************


If InitSprite() = 0
  Fatalerror("DirectX")
EndIf

If OpenLibrary (0, "icamplay.dll") = 0 
  FatalError ("Can't open icamplay.dll!") 
EndIf 

If iCamInitWindow(#True, #False) = 0
  FatalError ("Ne peut pas initialiser iCamPlay")
EndIf

iCamPreviewRate(30)
; C'est mieux quand l'image n'est pas inversée 
iCamSetMirror(#True) 


; Création de la fenêtre
OpenWindow(#Window,0,0,Screen\Width,Screen\Height,#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered,"Test") 
OpenWindowedScreen(WindowID(), 0, 0,Screen\Width,Screen\Height, 0, 0, 0) 

  
Repeat ; Jeu 

  ClearScreen(120, 120, 120)  
  
  iCamGetMotion() 
  
  ImageID = iCamGetWebcamImage() 
  StartDrawing(ScreenOutput()) 
    DrawImage(ImageID,0,0) 
  StopDrawing() 
  
  FlipBuffers() 
  
  Delay(10) 
    
  Select WindowEvent() 
    Case #PB_Event_CloseWindow 
      Sortie = 1 
  EndSelect ; evite le plantage clic gauche 
    
Until Sortie = 1 
CloseScreen() 
CloseLibrary(0) 
End
Répondre