2013-01-06 158 views
3

我一直不成功使用OpenCV的VideoCapture.open(INT)從USB網絡攝像頭讓視頻拍攝在我MacBook Pro運行Mac OS     X   v10.7(獅子)。使用open(0)成功從iSight攝像頭捕獲。但我沒有任何運氣試圖找到WebCam。OpenCV的Mac上是不開放USB網絡攝像頭

WebCam已安裝,並且與Skypemacam驅動程序應用程序配合良好。

下面是我使用的代碼的部分:

VideoCapture cap; 
for (int i = 1; i < 1500; i++) { 
    if (cap.open(i)) 
    { 
     cout << "Found camera %d\n" << i; 
     break; 
    } 
} 
if(!cap.isOpened()) { // Check if we succeeded 
    return -1; 
} 

如果我初始化i 0它立即找到iSight攝像頭。如果我用012初始化i,那麼當i = 500時,它再次找到iSight。

如何解決此問題?

回答

0

嘗試在沒有此行的情況下運行您的代碼:break;。可能你會發現不止一個攝像頭,其中一個攝像頭將WebCam。
注意cap.open該參數不僅是攝像頭的數量 - 這也決定了你想要的API使用方法:

相機調度方法:index是攝像機編號。

  • 如果給出從索引0到99,它試圖找到能夠訪問給定的相機索引第一
  • API。
  • 加入100的倍數來選擇一個API(從cap.cpp評論)

可能性(從highgui_c.h拍攝):

CV_CAP_ANY  =0,  // autodetect 
CV_CAP_MIL  =100, // MIL proprietary drivers 
CV_CAP_VFW  =200, // platform native 
CV_CAP_V4L  =200, 
CV_CAP_V4L2  =200, 
CV_CAP_FIREWARE =300, // IEEE 1394 drivers 
CV_CAP_FIREWIRE =300, 
CV_CAP_IEEE1394 =300, 
CV_CAP_DC1394 =300, 
CV_CAP_CMU1394 =300, 
CV_CAP_STEREO =400, // TYZX proprietary drivers 
CV_CAP_TYZX  =400, 
CV_TYZX_LEFT =400, 
CV_TYZX_RIGHT =401, 
CV_TYZX_COLOR =402, 
CV_TYZX_Z  =403, 
CV_CAP_QT  =500, // QuickTime 
CV_CAP_UNICAP =600, // Unicap drivers 
CV_CAP_DSHOW =700, // DirectShow (via videoInput) 
CV_CAP_PVAPI =800, // PvAPI, Prosilica GigE SDK 
CV_CAP_OPENNI =900, // OpenNI (for Kinect) 
CV_CAP_OPENNI_ASUS =910, // OpenNI (for Asus Xtion) 
CV_CAP_ANDROID =1000, // Android 
CV_CAP_XIAPI =1100, // XIMEA Camera API 
CV_CAP_AVFOUNDATION = 1200 // AVFoundation framework for iOS (OS X Lion will have the same API) 

也許CV_CAP_AVFOUNDATION = 1200是你在找什麼 - 嘗試開始你從1200循環,不要忘記刪除break;,我認爲你會發現你在找什麼。

+0

感謝您的建議。我使用下面的代碼,它只發現了API = 0(任何)和API = 500(QuickTime)的iSight攝像頭。任何其他想法? (int api = 0; api <= 1200; api + = 100){int cam = 0; cam <= 99; cam ++){int searchCamera(){ { VideoCapture cap(api + cam); if(cap.open(api + cam)) cout <<「在api處找到相機」<< api <<「camera」<< cam << endl; } } } return 0; }'(抱歉格式不佳) – vixo7

+0

1.使用最新版本的OpenCV。 2.嘗試與列表中的其他庫(庫)一起構建OpenCV - 最好的選擇是檢查它們是否被一個與您的相機正常工作並使用此相機的程序使用。 – cyriel