Differenze tra le versioni di "Catturare singole immagini da una ripresa video di una webcam mediante il Controllo MediaView del Componente gb.media.form"

Da Gambas-it.org - Wikipedia.
Riga 2: Riga 2:
  
 
==Uso delle Classi ''MediaPipeline'' e ''MediaControl'' del Componente gb.media==
 
==Uso delle Classi ''MediaPipeline'' e ''MediaControl'' del Componente gb.media==
Mostriamo un esempio pratico:
+
Mostriamo un esempio pratico, nel quale si catturerà <U>una sola</u> immagine di quanto ripreso da una webcam mediante il Controllo ''MediaView''.
 +
<BR>Si creerà una immagine di formato PNG:
 
  Public Sub Form_Open()
 
  Public Sub Form_Open()
 
   
 
   
Riga 15: Riga 16:
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
 
   Dim xis, con, enc, snk As MediaControl
 
   Dim xis, con, enc, snk As MediaControl
  Dim temporaneo As String
 
 
   Dim ob1, ob2, ob3 As Object
 
   Dim ob1, ob2, ob3 As Object
 
   Dim DrawingArea1 As DrawingArea
 
   Dim DrawingArea1 As DrawingArea
Riga 23: Riga 23:
 
   ob3 = ob2.Children[0]
 
   ob3 = ob2.Children[0]
 
   DrawingArea1 = ob3.Children[0]
 
   DrawingArea1 = ob3.Children[0]
 
  temporaneo = Temp
 
 
   
 
   
 
   pl = New MediaPipeline  
 
   pl = New MediaPipeline  
Riga 33: Riga 31:
 
   enc = New MediaControl(pl, "pngenc")
 
   enc = New MediaControl(pl, "pngenc")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
   snk["location"] = temporaneo
+
   snk["location"] = "/tmp" &/ Format(Now, "dd_mm_yyyy-hh_nn_ss") & ".png"
 
    
 
    
 
  <FONT Color=gray>' ''Collega fra loro i plugin di "GStreamer":''</font>
 
  <FONT Color=gray>' ''Collega fra loro i plugin di "GStreamer":''</font>
Riga 42: Riga 40:
 
  <FONT Color=gray>' ''Effettua la cattura di quanto mostrato dalla "DrawingArea" costitutiva del Controllo "MediaView":''</font>
 
  <FONT Color=gray>' ''Effettua la cattura di quanto mostrato dalla "DrawingArea" costitutiva del Controllo "MediaView":''</font>
 
   pl.Play()
 
   pl.Play()
 
  Repeat
 
    Wait 0.01
 
  Until Stat(temporaneo).Size > 0
 
 
<FONT Color=gray>' ''Salva il file immagine di formato "png" nella cartella "/tmp":''</font>
 
  Copy temporaneo To "/tmp" &/ Format(Now, "dd_mm_yyyy-hh_nn_ss") & ".png"
 
 
   
 
   
 
   pl.Stop
 
   pl.Stop

Versione delle 02:02, 3 lug 2024

Per catturare singole immagini da una ripresa video di una webcam mediante il Controllo MediaView del Componente gb.media.form, si possono usare alcune modalità. [nota 1]

Uso delle Classi MediaPipeline e MediaControl del Componente gb.media

Mostriamo un esempio pratico, nel quale si catturerà una sola immagine di quanto ripreso da una webcam mediante il Controllo MediaView.
Si creerà una immagine di formato PNG:

Public Sub Form_Open()

 MediaView1.URL = "v4l2:///dev/video0"
 MediaView1.Play()

End


Public Sub Button1_Click()

 Dim pl As MediaPipeline
 Dim xis, con, enc, snk As MediaControl
 Dim ob1, ob2, ob3 As Object
 Dim DrawingArea1 As DrawingArea

 ob1 = MediaView1.Children[0]
 ob2 = ob1.Children[0]
 ob3 = ob2.Children[0]
 DrawingArea1 = ob3.Children[0]

 pl = New MediaPipeline 

 xis = New MediaControl(pl, "ximagesrc")
 xis["xid"] = DrawingArea1.Id
 con = New MediaControl(pl, "videoconvert")
 enc = New MediaControl(pl, "pngenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp" &/ Format(Now, "dd_mm_yyyy-hh_nn_ss") & ".png"
 
' Collega fra loro i plugin di "GStreamer":
 xis.LinkTo(con)
 con.LinkTo(enc)
 enc.LinkTo(snk)

' Effettua la cattura di quanto mostrato dalla "DrawingArea" costitutiva del Controllo "MediaView":
 pl.Play()

 pl.Stop
 pl.Close

End


Note

[1] Vedere anche queste pagine: