Bonsoir,
J ai un programme qui capture une image a partir du flux video de la webcam.
Mon problème c'est que je n'arrive pas a éteindre la webcam quand j'en ai plus besoin dans le programme la lampe de la webcam reste toujours allumée.
Voici le code source:
Module:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113 Imports DirectX.Capture Public Class frm_config_cam Dim TimeElapsCapture As Integer Dim StartTime As Date ''' <summary> ''' Liste les webcam et haut parleurs disponible sur le pc ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> ''' <remarks></remarks> Private Sub frm_config_cam_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i As Short Dim j As Filter 'listage des peripheriques video installés sur la machine cb_select_cam.Items.Clear() For i = 0 To Dispositivos.VideoInputDevices.Count - 1 j = Dispositivos.VideoInputDevices(i) cb_select_cam.Items.Add(j.Name) Next 'par défaut If i > 0 Then cb_select_cam.SelectedIndex = 0 'listage des peripheriques audio installés sur la machine cb_select_hp.Items.Clear() For i = 0 To Dispositivos.AudioInputDevices.Count - 1 j = Dispositivos.AudioInputDevices(i) cb_select_hp.Items.Add(j.Name) Next If i > 0 Then cb_select_hp.SelectedIndex = 0 End Sub ''' <summary> ''' Configuration de la webcam ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> ''' <remarks></remarks> Private Sub tsb_config_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_video_webcam.Click 'pre configuration du capturing 'definission de la camera CaptureInformation2.Camera = Dispositivos.VideoInputDevices(cb_select_cam.SelectedIndex) 'mise en place du stream video et audio CaptureInformation2.CaptureInfo = New DirectX.Capture.Capture(CaptureInformation2.Camera, Dispositivos.AudioInputDevices(cb_select_hp.SelectedIndex)) 'renseignement du panneau d'affichage de la video CaptureInformation2.CaptureInfo.PreviewWindow = pic_camera 'compteur pour les capture d'image (frame video) CaptureInformation2.Counter = 1 CaptureInformation2.CounterFrames = 1 'configurations avancées Configurer() 'pour la gestion evennementiel de la capture d'ecran je cree un gestionnaire d evennement sur Framecapturecomplete AddHandler CaptureInformation2.CaptureInfo.FrameCaptureComplete, AddressOf NewCaptureReady End Sub ''' <summary> ''' appele par le gestionnaire de handler sur l'evennement "FrameCapture ''' Affiche la capture dans la picturebox ''' Copie a partir de la picturebox une image ''' </summary> ''' <param name="Sender"></param> ''' <remarks></remarks> Private Sub NewCaptureReady(ByVal Sender As System.Windows.Forms.PictureBox) Dim pict As PictureBox = CType(Sender, PictureBox) 'converti mon picturebox en picturebox sinom ca ne marche pas Dim img_pic As Image pic_photo.Image = pict.Image 'j affecte la capture d'image a la picturebox img_pic = pict.Image 'j affecte la capture d'image a une image 'sauvegarde l'image dans un repertoire image au format jpg img_pic.Save(App_Path() & "\\image\\img_" & fonc_nbr_client() + 1 & ".jpg") End Sub ''' <summary> ''' Configuration avancées de la webcam ''' </summary> ''' <remarks></remarks> Private Sub Configurer() 'configurations avancées 'configuration du systeme de compression video et audio CaptureInformation2.CaptureInfo.VideoCompressor = Dispositivos.VideoCompressors(1) 'compression video 'taille de la video CaptureInformation2.CaptureInfo.FrameSize = New Size(320, 240) 'taille de la video 'FPS de la video CaptureInformation2.CaptureInfo.FrameRate = 50 'FPS 'lancement du streaming d'affichage CaptureInformation2.CaptureInfo.RenderPreview() End Sub ''' <summary> ''' 'demande une capture DirectX ...et lorsqu'elle est ready je la recois par le Handler cree un peut plus haut ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> ''' <remarks></remarks> Private Sub tsb_photo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_photo.Click CaptureInformation2.CaptureInfo.CaptureFrame() End Sub ''' <summary> ''' obtenir le App.Path en VB.NET ''' </summary> ''' <returns></returns> ''' <remarks></remarks> Public Function App_Path() As String Return System.AppDomain.CurrentDomain.BaseDirectory() End Function Private Sub tsb_quitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_quitter.Click Me.Close() End Sub End Class
Si quelle qu'un a une solution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Public Structure Active2 Dim Camera As Filter Dim CaptureInfo As DirectX.Capture.Capture Dim Counter As Integer Dim CounterFrames As Integer Dim PathVideo As String End Structure 'le streaming en cours Public CaptureInformation2 As Active2 'le filtre en cours Public Dispositivos As New Filters()
Merci d'avance.
Partager