2011-11-03 75 views
0

我正尝试在我的MacBook上用内置的iSight摄像头创建一个OpenCV应用程序。我从互联网上抓取了一些非常简单的代码,并且毫不费力地运行它。 OpenCV自动发现内置网络摄像头并正常运行,但无法使用我的USB网络摄像头。OpenCV找不到我的USB网络摄像头

#include <stdio.h> 
#include <opencv.hpp> 

int main(int argc, char **argv) 
{ 
    CvCapture *capture = 0; 
    IplImage *frame = 0; 
    int  key = 0; 

    /* initialize camera */ 
    capture = cvCaptureFromCAM(0); 

    /* always check */ 
    if (!capture) { 
     fprintf(stderr, "Cannot open initialize webcam!\n"); 
     return 1; 
    } 

    /* create a window for the video */ 
    cvNamedWindow("Test", CV_WINDOW_AUTOSIZE); 

    while(key != 'q') { 
     /* get a frame */ 
     frame = cvQueryFrame(capture); 

     /* always check */ 
     if(!frame) break; 

     /* display current frame */ 
     cvShowImage("Test", frame); 

     /* exit if user press 'q' */ 
     key = cvWaitKey(1); 
    } 

    /* free memory */ 
    cvDestroyWindow("Test"); 
    cvReleaseCapture(&capture); 

    return 0; 
} 

我编译如下:

g++ webcam.c -o webcam -I/opt/local/include/opencv2 -I/opt/local/include -L/opt/local/lib -lopencv_core -lopencv_highgui 

根据该文件,通过改变线路capture = cvCaptureFromCAM(0);capture = cvCaptureFromCAM(1);我应该能够访问我已插入其它网络摄像头,但在运行程序给我的错误信息:Warning: Max Camera Num is 0; Using camera 0

我可以采取什么步骤让OpenCV认识到我有另一台相机连接到我的USB驱动器?

+0

其他应用可以看到您的摄像头吗?对不起,我不知道如何在OSX上发现摄像头的细节,但你所做的一般是正确的 –

+0

我从http://webcam-osx.sourceforge.net/得到了应用程序macam,它可以使用该设备,但它具有用Objective-C编写的相机的软件驱动程序。我是否需要编写自己的相机驱动程序? – Timulus

+0

openCV使用系统的相机接口(Directshow在窗口上,不知道在OSX上),请尝试在这里问:http://tech.groups.yahoo.com/group/OpenCV/messages –

回答

0

这是基于Windows的经验,但我相信主要问题是相同的。 (从我的笔记本电脑上的Logitech USB摄像头获得输入。)

据我记得; OpenCV不支持多个摄像头,因此不支持摄像头。 我猜你可以很容易地使用你所显示的代码运行你的内置摄像头。 我对类似问题的解决方案是停用内置摄像头。为USB摄像头提供cvCaptureFromCAM(0)功能的唯一“可用”插槽。

我希望这可以解决您的问题,即使解决方案有点“笨拙”。