2012-05-11 67 views
1

我想用兩個USB網絡攝像頭(飛利浦SPC 900NC)拍攝實時視頻,但我發現他們無法在我的筆記本電腦上同時工作。兩個USB攝像頭中的任何一個都可以單獨工作,或者與另一個攝像頭一起工作(最初安裝在我的筆記本電腦上)。如何在Matlab中同時使用多個USB網絡攝像頭?

當我使用Simulink模塊「從視頻設備」時,Matlab給出錯誤信息'多個VIDEOINPUT對象不能同時訪問同一個設備'。然後我用命令'imaqhwinfo'檢查了視頻輸入設備,只能檢測到一個USB Philips攝像頭。

我想知道,

  1. 什麼是這種情況的原因是什麼?是因爲硬件限制(USB總線帶寬)還是隻是matlab視頻對象不支持相同的多個視頻設備?

  2. 這是什麼解決方案?任何人都可以給我一些建議嗎?

非常感謝。

回答

-2

,您可以在這個環節感興趣:

http://opencv.willowgarage.com/wiki/faq#How_to_use_2_cameras_.28multiple_cameras.29_with_cvCam_library

其中包含:

首先,init的cvcam庫,並通過獲得的凸輪數:

int ncams = cvcamGetCamerasCount(); //returns the number of available cameras in the system 

顯示對話框選擇使用哪臺相機

int* out; int nselected = cvcamSelectCamera(&out); 

獲取選定的凸輪並啓用它們。

int cam1 = out[0]; 
int cam2 = out[1]; 

cvcamSetProperty(cam1, CVCAM_PROP_ENABLE, CVCAMTRUE); 
cvcamSetProperty(cam1, CVCAM_PROP_RENDER, CVCAMTRUE); //We'll render stream from this source 
cvNamedWindow("Cam1", 1); 
cvcamWindow MyWin1 = (cvcamWindow)cvGetWindowHandle("Cam1"); 
cvcamSetProperty(cam1, CVCAM_PROP_WINDOW, &MyWin1); // Selects a window for video rendering 
//Same code for camera 2 
cvcamSetProperty(cam2, CVCAM_PROP_ENABLE, CVCAMTRUE); 
cvcamSetProperty(cam2, CVCAM_PROP_RENDER, CVCAMTRUE); 
cvNamedWindow("Cam2", 1); 
cvcamWindow MyWin2 = (cvcamWindow)cvGetWindowHandle("Cam2"); 
cvcamSetProperty(cam2, CVCAM_PROP_WINDOW, &MyWin1); 

//If you want to open the property dialog for setting the video format parameters, uncomment this line 
//cvcamGetProperty(cam1, CVCAM_VIDEOFORMAT, NULL); 
//cvcamGetProperty(cam2, CVCAM_VIDEOFORMAT, NULL); 

啓用立體聲模式(2臺攝像機同時工作)

cvcamSetProperty(cam1, CVCAM_STEREO_CALLBACK , stereocallback); //stereocallback is the function running to process every frames 

cvcamInit(); 
cvcamStart(); 

//Your app is working 
while (1) 
{ 
    int key = cvWaitKey(5); 
    if (key == 27) break; 
} 
cvcamStop(); 
cvcamExit(); 

定義上述功能之外stereocallback功能。

void stereocallback(IplImage* image1, IplImage* image2) { 

//Process 2 images here 
}