2013-05-19 66 views
2

我正在使用OpenCV獲取一些視頻幀。這是相機捕獲如何初始化:從當前捕獲獲取設備ID

VideoCapture capture; 
capture.open(0); //Read from camera #0 

如果我想切換到不同的相機,我應該這樣做:

capture.release(); //Release the stream 
capture.open(1); //Open different stream 

想象一下,你必須連接到你的電腦,你幾臺攝像機想要使用兩個按鈕循環瀏覽它們上一個攝像機下一個攝像機。如果不將當前相機ID保存到變量中,我需要從VideoCapture對象中獲取實際值。
那麼有沒有辦法如何找出目前使用的設備ID爲

僞代碼:

int current = capture.deviceId; 
capture.release(); 
capture.open(current++); 
+0

似乎這是不可能的。你可以保留當前相機的靜態變量的索引嗎? –

+0

如果沒有其他辦法,我一定會使用全局變量 - 而且我實際上是這樣做的,作爲臨時解決方案。但我認爲在兩處存儲相同的信息毫無意義,所以我試圖從'VideoCapture'實例中提取它。 –

回答

0

那麼,有沒有辦法如何找出當前使用設備的ID?

有沒有辦法做到這一點,因爲VideoCapture類不包含這樣的變量或方法。它實際上包含protected指向CvCapture(看看highgui.h),所以你可以嘗試玩它,但你沒有訪問此字段。