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

API, COM et SDKs Delphi Discussion :

Utilisation des API win32 pour récupérer les images à partir d'une webcam


Sujet :

API, COM et SDKs Delphi

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Utilisation des API win32 pour récupérer les images à partir d'une webcam
    Bonjour,

    Mon but est de récupérer le flux vidéo à partir d'une webcam standard sous delphi.
    Après des recherches sur le net, j'utilise l'AviCap de windows (AVICAP32.dll) qui se base sur des envois de messages windows.
    http://msdn.microsoft.com/en-us/libr...63(VS.85).aspx
    J'ai pu également trouvé un exemple d'utilisation de cette bibliothèque sous delphi (en créant un objet TCapture).
    Je l'ai intégré dans mon projet et cela fonctionne correctement.
    Cependant, un problème s'est posé lorsqu'un poste pouvait avoir 2 webcams (le cas des portables intégrant une webcam). Mon projet doit fonctionner avec le webcam prévu, et non celui qui est déjà présent sur le poste.
    Je dois donc arriver à sélectionner le matériel, et c'est là mon problème.
    Il semble que l'AviCap soit plus orienter sur le traitement de la vidéo et on ne peut sélectionner la source (on peut faire appel à la boite de dialogue de la webcam, mais il faut que ça soit transparent dans mon logiciel).
    J'ai trouvé une autre API qui est WIA et qui serait plus dédié à l'acquisition vidéo.
    http://msdn.microsoft.com/en-us/library/ms792496.aspx
    Cependant, je suis bloquée, car je n'arrive pas à importer la bibliothèque wiaservc.dll (avec l'importation de composants sous borland). Il faudrait donc manuellement écrire l'interface delphi, et je ne comprend pas bien le fonctionnement des objets COM ou bien les bibliothèques de types, pour pouvoir le faire.
    Est-ce que quelqu'un a déjà utilisé ces API, ou bien m'aider à comprendre les objets COM et les bibliothèques de types, afin de savoir comment écrire une interface les utilisant ?
    Ou bien si vous avez d'autres solutions ?
    Autre précision, on peut télécharger la WIA sdk (offrant une bibliothèque .lib et des fichiers header .h), mais celui-ci n'est donc exploitable qu'en c/c++.

    Merci pour toute aide apportée.

    Nonokho

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Il semble pourtant possible de choisir la source de la capture avec
    WM_CAP_DRIVER_CONNECT non?

    http://msdn.microsoft.com/en-us/libr...79(VS.85).aspx

    wParam semble être l'index (0-9)

    Une petite enumeration juste avant
    http://msdn.microsoft.com/en-us/libr...73(VS.85).aspx
    pourrait te permettre de choisir le bon automatiquement?
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'ai déjà essayé d'utiliser la fonction capGetDriverDescription, mais il me liste les driver de capture, qui est en l'occurrence 'Microsoft WDM Image Capture (Win32)', et non les caméras présentes.

    Merci quand même.

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Avez-vous essayé avec
    WM_CAP_SET_MCI_DEVICE
    WM_CAP_GET_MCI_DEVICE
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'ai essayé, et ça n'a pas l'air de fonctionner.
    Ce que je comprends de la msdn, c'est que cela sert à nommer :
    "The WM_CAP_GET_MCI_DEVICE message retrieves the name of an MCI device previously set with the WM_CAP_SET_MCI_DEVICE message"
    Je ne comprends pas d'ailleurs l'utilité de cette fonction.
    En l'utilisant, cela m'a nommé le driver et non le matériel, qui plus est, et si je fais un get au départ, le nom est vide.
    Peut être que je m'en sers mal, mais je ne vois pas trop.

  6. #6
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Voici le code pour le traitement d'une webcam en delphi:

    http://delphimagic.blogspot.com/search/label/Webcam

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci,

    J'utilise la même chose (les fonctionnalités défini dans Avicap32.dll), mais intégré dans un composant nommé TCapture, et il n'y pas de fonction pour sélectionner la webcam.

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Pour l'instant, je ne vois pas de solution à part en désactivant manuellement le driver de la webcam non voulue dans le gestionnaire de périphériques.

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/06/2013, 10h15
  2. Hook pour récupérer les messages windows d'une autre application
    Par Tuizi dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 07/12/2007, 15h30
  3. Réponses: 12
    Dernier message: 25/06/2006, 23h24
  4. Réponses: 1
    Dernier message: 07/06/2006, 18h56
  5. [VB6] Récupérer les images à partir d'une ImageList
    Par mbzhackers dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 30/05/2006, 15h46

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