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.
(Una versione intermedia di uno stesso utente non è mostrata) | |||
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: | + | ===Cattura di <U>una sola</u> immagine di quanto ripreso da una webcam=== |
+ | 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 17: | ||
Dim pl As MediaPipeline | Dim pl As MediaPipeline | ||
Dim xis, con, enc, snk As MediaControl | Dim xis, con, enc, snk As MediaControl | ||
− | |||
Dim ob1, ob2, ob3 As Object | Dim ob1, ob2, ob3 As Object | ||
Dim DrawingArea1 As DrawingArea | Dim DrawingArea1 As DrawingArea | ||
Riga 23: | Riga 24: | ||
ob3 = ob2.Children[0] | ob3 = ob2.Children[0] | ||
DrawingArea1 = ob3.Children[0] | DrawingArea1 = ob3.Children[0] | ||
− | |||
− | |||
pl = New MediaPipeline | pl = New MediaPipeline | ||
Riga 33: | Riga 32: | ||
enc = New MediaControl(pl, "pngenc") | enc = New MediaControl(pl, "pngenc") | ||
snk = New MediaControl(pl, "filesink") | snk = New MediaControl(pl, "filesink") | ||
− | snk["location"] = | + | 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 43: | Riga 42: | ||
pl.Play() | pl.Play() | ||
− | + | pl.Stop | |
− | + | pl.Close | |
− | + | ||
+ | End | ||
+ | |||
+ | ===Cattura di più immagini con la frequenza di 1 secondo di quanto ripreso da una webcam mediante il Controllo ''MediaView''=== | ||
+ | Private bo As Boolean | ||
+ | |||
+ | |||
+ | Public Sub Form_Open() | ||
+ | |||
+ | MediaView1.URL = "v4l2:///dev/video0" | ||
+ | MediaView1.Play() | ||
+ | |||
+ | End | ||
+ | |||
− | <FONT Color=gray>' '' | + | 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 | ||
+ | |||
+ | pl = New MediaPipeline | ||
+ | |||
+ | While Not bo | ||
+ | ob1 = MediaView1.Children[0] | ||
+ | ob2 = ob1.Children[0] | ||
+ | ob3 = ob2.Children[0] | ||
+ | DrawingArea1 = ob3.Children[0] | ||
+ | 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" | ||
+ | |||
+ | xis.LinkTo(con) | ||
+ | con.LinkTo(enc) | ||
+ | enc.LinkTo(snk) | ||
+ | |||
+ | <FONT Color=gray>' ''Effettua la cattura di quanto mostrato dalla "DrawingArea" costitutiva del Controllo "MediaView":''</font> | ||
+ | pl.Play | ||
+ | <FONT Color=gray>' ''L'inserimento del Metodo ".Stop()" è necessario, per consentire la registrazione dei dati immagine nel file immagine finale:''</font> | ||
+ | pl.Stop | ||
+ | Wait 1 | ||
+ | Wend | ||
− | |||
pl.Close | pl.Close | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Public Sub Button2_Click() | ||
+ | |||
+ | bo = True | ||
End | End |
Versione delle 02:36, 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]
Indice
Uso delle Classi MediaPipeline e MediaControl del Componente gb.media
Cattura di una sola immagine di quanto ripreso da una webcam
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
Cattura di più immagini con la frequenza di 1 secondo di quanto ripreso da una webcam mediante il Controllo MediaView
Private bo As Boolean 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 pl = New MediaPipeline While Not bo ob1 = MediaView1.Children[0] ob2 = ob1.Children[0] ob3 = ob2.Children[0] DrawingArea1 = ob3.Children[0] 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" xis.LinkTo(con) con.LinkTo(enc) enc.LinkTo(snk) ' Effettua la cattura di quanto mostrato dalla "DrawingArea" costitutiva del Controllo "MediaView": pl.Play ' L'inserimento del Metodo ".Stop()" è necessario, per consentire la registrazione dei dati immagine nel file immagine finale: pl.Stop Wait 1 Wend pl.Close End Public Sub Button2_Click() bo = True End
Note
[1] Vedere anche queste pagine: