OpenCV Capture depuis une caméra externe

J’écris actuellement une application en temps réel avec OpenCV et dans le cas suivant: J’essaie de capturer une image à partir d’une caméra HDV branchée sur le firewire 800. J’ai essayé de boucler un index utilisé sur cvCaptureFromCam, mais aucune caméra ne peut t être trouvé (sauf la webcam).

il y a mon exemple de code, il boucle sur l’index (d’échappement 0 car c’est l’index de la webcam):

CvCapture* camera; int index; for (index = 1; index < 100; ++index) { camera = cvCaptureFromCAM(index); if (camera) break; } if (!camera) abort(); 

À tout moment, il s’arrête à l’avortement.

Je comstack sur OSX 10.7 et j’ai testé:

  • OpenCV 1.2 framework privé
  • OpenCV 2.0 private framework (trouvé ici: OpenCV2.0.dmg )
  • OpenCV compilé par moi-même (ver. 2)

Je sais que le problème est connu et que de nombreuses discussions sont en cours à ce sujet, mais je ne parviens pas à trouver de solution.

Est-ce que quelqu’un a été dans le même cas?

Cordialement.

index devrait commencer à 0 au lieu de 1 .

Si cela ne fonctionne pas, votre appareil photo n’est peut-être pas pris en charge par OpenCV. Je vous suggère de vérifier si c’est dans la liste de compatibilité .

Pour sélectionner explicitement firewire, vous pouvez peut-être essayer d’append 300 à votre index? Au moins dans OpenCV 2.4, chaque type de caméra se voit atsortingbuer un domaine spécifique. Par exemple, Video4Linux se voit atsortingbuer le domaine 200; 200 est donc la première caméra V4L, 201 est la deuxième, etc. Pour Firewire, le domaine est 300. Si vous spécifiez un index inférieur à 100, OpenCV effectue une itération sur chacun de ses domaines commande, qui peut ne pas être celle que vous attendez. Par exemple, votre webcam peut être détectée en premier lieu, mais jamais la caméra Firewire. Si ce n’est pas le problème, veuillez accepter mes excuses.