Usare la classe Base_VideoAcquire
L'obbiettivo di questo post è quello di mostrare come utilizzare la classe Base_VideoAcquire che abbiamo implementato precedentemente...
Avviamo un progetto WinForm e nella form principale importiamo i namespaces. (io solitamente per le classi che scrivo antepongo il mio cognome al namespaces... quindi se importate la dll dell'esempio nei vostri progetti dovrete inserire gli imports così... se ve la compilate per conto vostro cambiate DIBIASI con il vostro cognome)
Imports DirectShowLib
Imports DIBIASI.Video.Simple
Imports System.Runtime.InteropServices.ComTypes
Inseriamo una PictureBox e la nominiamo nP
Inseriamo un Button.. e nell'evento di gestione di quest'ultimo ...
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim MyVU As New Base_VideoUtilty() ' istanziamo il wrap
' Recuperiamo la lista delle periferiche disponibili
Dim dictPer As Dictionary(Of Integer, IMoniker)
Try
dictPer = MyVU.Get_ListOfVideoAcquireHardware()
Catch
MsgBox("Non ci sono periferiche disponibili.")
End Try
' Istanziamo la periferica 0 { la prima disponibile }
Dim theHard As Base_VideoUtilty.Base_VideoAcquireHardware = MyVU.Create_VideoAcquireHardware(0)
Chiaramente, se abbiamo due webcam per istanziarle tutte e due faremo così :
Dim cam1 As Base_VideoUtilty.Base_VideoAcquireHardware = MyVU.Create_VideoAcquireHardware(0)
Dim cam2 As Base_VideoUtilty.Base_VideoAcquireHardware = MyVU.Create_VideoAcquireHardware(1)
Cambiando solo il parametro finale della funzione Create_VideoAcquireHardare
' Avviamo il video nella picturebox Np
theHard.StartVideoOnHandle(Np.Handle, PinCategory.Capture, MediaType.Video)
theHard.ResizeVideoOnHandle(Np.Width, Np.Height)
' Attenzione nel gestire l'evento Resize della picturebox...
theHard.ResizeVideoOnHandle(Np.Width, Np.Height) ' ATTENZIONE!!!!!!! Questa riga và chiamata OGNI volta che si effettua il resize dell'oggetto dove è visualizzato il video
Per scaricare un esempio di utilizzo, che supporti più webcam, e la DLL compilata (DirectShow.NET.dll + Base_VideoAcquire.Dll) cliccate qui
ATTENZIONE: Per come è stata concepita, anche se in linea generale è possibile istanziarla più volte, è consigliabile creare una sola istanza di Base_VideoAcquire per progetto!
Nel prossimo post cercheremo di capire come effettuare la cattura del frame.