IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Capture webcam choix sources intempestif


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    Bonjour à tous,

    Dans un logiciel, je fais une capture d'un webcam avec Avicap.dll. De manière générale, tout se passe bien, mais quelques fois, sans que j'arrive à trouver la raison, au moment de prendre la photo, la fenêtre de choix de la source vidéo apparait et bloque la prise de l'image.

    Pour information, j'ai récupéré un code pour faire cela que j'ai un peu modifié de la manière suivante.


    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
     
     Public Sub connexionwebcam()
            LoadDeviceList()
            If lstDevices.Items.Count > 0 Then
                lstDevices.SelectedIndex = 0
            Else
                lstDevices.Items.Add("Caméra non connectée")
            End If
     
            Me.AutoScrollMinSize = New Size(100, 100)
     
            Dim r As Rectangle
     
            iDevice = lstDevices.SelectedIndex
            Dim bReturn As Boolean
            Dim wSize As Integer
            Dim s As CAPSTATUS
            bReturn = SendMessage(hHwnd, WM_CAP_GET_STATUS, Marshal.SizeOf(s), s)
     
        End Sub
     
     
     Private Sub LoadDeviceList()
            Dim strName As String = Space(100)
            Dim strVer As String = Space(100)
            Dim bReturn As Boolean
            Dim x As Short = 0
     
            Do
     
                bReturn = capGetDriverDescriptionA(x, strName, 100, strVer, 100)
     
                If bReturn Then lstDevices.Items.Add(strName.Trim)
                x += CType(1, Short)
            Loop Until bReturn = False
        End Sub
     
    Private Sub OpenPreviewWindow()
            If modemanuel = False Then
                Dim picCapture As New PictureBox
            End If
            Dim iHeight As Integer = picCapture.Height
            Dim iWidth As Integer = picCapture.Width
     
            hHwnd = capCreateCaptureWindowA(iDevice.ToString, WS_VISIBLE Or WS_CHILD, 0, 0, 370, _
               250, picCapture.Handle.ToInt32, 0)
     
            If SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, iDevice, 0) Then
                SendMessage(hHwnd, WM_CAP_SET_SCALE, True, 0)
                SendMessage(hHwnd, WM_CAP_SET_PREVIEWRATE, 66, 0)
                SendMessage(hHwnd, WM_CAP_SET_PREVIEW, True, 0)
                SetWindowPos(hHwnd, HWND_BOTTOM, 0, 0, 370, 250, SWP_NOMOVE Or SWP_NOZORDER)
            Else
                DestroyWindow(hHwnd)
            End If
        End Sub
     
     
        Delegate Sub MySubDelegate()
     
        Protected Sub DelegateTest()
            Dim c1 As New class1
            ' Create an instance of the delegate.
            Dim msd As MySubDelegate = AddressOf c1.Sub1
            ' Call the method.
            msd.Invoke()
        End Sub
     
    Public Sub prisephoto()
            Dim data As IDataObject
            Dim bmap As Bitmap
     
            If modemanuel = False Then
                OpenPreviewWindow()
            End If
     
            SendMessage(hHwnd, WM_CAP_EDIT_COPY, 640, 480)
     
            data = Clipboard.GetDataObject()
     
            If data.GetDataPresent(GetType(System.Drawing.Bitmap)) Then
                bmap = CType(data.GetData(GetType(System.Drawing.Bitmap)), Bitmap)
                picCapture.Image = bmap
     
                If modemanuel = False Then
                    ClosePreviewWindow()
                End If
     
                Trace.Assert(Not (bmap Is Nothing))
                bmap.Save("C:\photosjpg\" + nomdossier + "\" + valeurcb(cbvaltexte) + ".jpg", Imaging.ImageFormat.Jpeg)
            End If
        End Sub
     
        Private Sub ClosePreviewWindow()
            SendMessage(hHwnd, WM_CAP_DRIVER_DISCONNECT, iDevice, 0)
            DestroyWindow(hHwnd)
        End Sub
    Quelqu'un aurait-il une idée de pourquoi la fenêtre de choix de la source s'ouvre de manière intempestive?

    Merci

    Je me demande s'il ne s'agit pas d'une surcharge de la mémoire, mais je ne sais ni comment le tester, ni comment y remédier si cela est bien le cas.

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    Re-bonjour,

    Après quelques recherches, j'ai cru comprendre que le problème était récurent avec AVICap32: voir ici.

    Par contre je n'ai toujours pas trouvé de solution à mon problème. A noter qu'un simple redémarrage de la machine permet de revenir dans des conditions normales et que le problème semble +/- fréquent d'une webcam à une autre.

    Si quelqu'un a une idée sur comment régler le problème, je suis preneur.

    Merci

Discussions similaires

  1. [VB.NET]Capture Webcam WIA
    Par shinji_rem dans le forum Windows Forms
    Réponses: 11
    Dernier message: 03/08/2012, 13h13
  2. [JMF] Capture Webcam & createRealizedPlayer
    Par plut0nium dans le forum Multimédia
    Réponses: 4
    Dernier message: 09/03/2011, 15h31
  3. Réponses: 4
    Dernier message: 18/05/2010, 23h52
  4. Capture WebCam avec Silverlight ?
    Par Invité dans le forum Silverlight
    Réponses: 5
    Dernier message: 07/12/2009, 14h07
  5. [VB6] Capture Webcam
    Par Vesta dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/02/2007, 14h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo