OpenCV Capture from external camera

T3e picture T3e · Apr 20, 2012 · Viewed 7.6k times · Source

I'm currently writing an real time application using OpenCV and in the following case: I'm trying to capture an image from a HDV camera plugged in firewire 800. I have tried to loop on index used on cvCaptureFromCam, but no camera can't be found (except the webcam).

there is my code sample, it loop on index (escaping 0 cause it's the webcam's index) :

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

On any time it stops on the abort.

I'm compiling on OSX 10.7 and I have tested :

  • OpenCV 1.2 private framework
  • OpenCV 2.0 private framework (found here : OpenCV2.0.dmg)
  • OpenCV compiled by myself (ver. 2)

I know that the problem is knowned and there is a lot of discussion about this, but I'm not able ti find any solution.

Does anyone have been in the same case ?

Regards.

Answer

Sam picture Sam · Nov 1, 2012

To explicitly select firewire, perhaps you can try to add 300 to your index? At least in OpenCV 2.4, each type of camera is given a specific domain. For example, Video4Linux are given domain 200, so 200 is the first V4L camera, 201 is the second, etc. For Firewire, the domain is 300. If you specify an index less than 100, OpenCV just iterates through each of its domains in order, which may not be the order you expect. For example, it might find your webcam first, and never find the firewire camera. If this is not the issue, please accept my appologies.