2011-11-03 163 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)功能的唯一「可用」插槽。

我希望這可以解決您的問題,即使解決方案有點「笨拙」。