OpenCV Capture from external camera

让人想犯罪 __ 提交于 2019-12-08 00:07:02

问题


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.


回答1:


index should start at 0 instead of 1.

If that doesn't work, maybe your camera is not supported by OpenCV. I suggest you check if it is in the compatibility list.




回答2:


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.



来源:https://stackoverflow.com/questions/10248201/opencv-capture-from-external-camera

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!