嘗試在沒有此行的情況下運行您的代碼: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;
,我認爲你會發現你在找什麼。
感謝您的建議。我使用下面的代碼,它只發現了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
1.使用最新版本的OpenCV。 2.嘗試與列表中的其他庫(庫)一起構建OpenCV - 最好的選擇是檢查它們是否被一個與您的相機正常工作並使用此相機的程序使用。 – cyriel