在OpenCV中,可以使用cv::VideoCapture
類來支持多攝像頭系統的圖像捕獲和處理。首先,您需要創建多個cv::VideoCapture
對象,每個對象代表一個攝像頭。然后,您可以使用VideoCapture::open()
方法打開每個攝像頭,指定攝像頭的索引號(通常從0開始)。接著,您可以使用VideoCapture::read()
方法從每個攝像頭捕獲圖像,并對圖像進行處理。
下面是一個簡單的示例代碼,演示如何使用OpenCV支持多攝像頭系統的圖像捕獲和處理:
#include <opencv2/opencv.hpp>
int main() {
cv::VideoCapture cap1(0); // 打開第一個攝像頭
cv::VideoCapture cap2(1); // 打開第二個攝像頭
if (!cap1.isOpened() || !cap2.isOpened()) {
std::cout << "Error opening video stream or file" << std::endl;
return -1;
}
cv::Mat frame1, frame2;
while (true) {
cap1.read(frame1); // 從第一個攝像頭捕獲圖像
cap2.read(frame2); // 從第二個攝像頭捕獲圖像
// 在這里對frame1和frame2進行圖像處理
cv::imshow("Camera 1", frame1);
cv::imshow("Camera 2", frame2);
if (cv::waitKey(1) == 27) { // 按下ESC鍵退出循環
break;
}
}
cap1.release();
cap2.release();
cv::destroyAllWindows();
return 0;
}
在這個示例中,我們創建了兩個VideoCapture
對象分別代表兩個攝像頭,然后在一個無限循環中從每個攝像頭捕獲圖像并顯示出來。您可以在循環中添加任何圖像處理代碼來處理從每個攝像頭捕獲的圖像。最后,當按下ESC鍵時退出循環,并釋放攝像頭對象以及關閉所有顯示窗口。