Я пытаюсь получить доступ к нескольким USB-камерам в openCV с MacOS 10.11. Моя цель - подключить до 20 камер к компьютеру через USB-четырехканальные расширения и сделать отдельные снимки. Мне не нужно жить в прямом эфире.OpenCV несколько камер одно изображение
Я пробовал использовать следующий код, и я могу сделать одно изображение со всех камер (в настоящее время только 3, через один контроллер usb).
Вопрос заключается в том, что opencv постоянно транслирует видео в реальном времени с USB-камер или делает захват() сохраняет изображение на камере, которое можно получить с помощью retrieve()?
Я не мог найти информацию, так как opencv использует команду grab() в своем внутреннем видео-буфере или на камере.
int main(int argument_number, char* argument[])
{
std::vector<int> cameraIDs{0,1,2};
std::vector<cv::VideoCapture> cameraCaptures;
std::vector<std::string> nameCaptures{"a","b","c"};
//Load all cameras
for (int i = 0;i<cameraIDs.size();i++)
{
cv::VideoCapture camera(cameraIDs[i]);
if(!camera.isOpened()) return 1;
camera.set(CV_CAP_PROP_FRAME_WIDTH, 640);
camera.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
cameraCaptures.push_back(camera);
}
cv::namedWindow("a");
while(true) {
int c = cvWaitKey(2);
if(27 == char(c)){ //if esc pressed. grab new image and display it.
for (std::vector<cv::VideoCapture>::iterator it=cameraCaptures.begin();it!=cameraCaptures.end();it++)
{
(*it).grab();
}
int i=0;
for (std::vector<cv::VideoCapture>::iterator it=cameraCaptures.begin();it!=cameraCaptures.end();it++)
{
cv::Mat3b frame;
(*it).retrieve(frame);
cv::imshow(nameCaptures[i++], frame);
}
}
}
return 0;
}
Я хочу, чтобы поток камеры был открыт все время, без фактической отправки текущего изображения, пока я не скажу openCV, чтобы захватить изображение. –
Ну, вот что я думаю. И более того, лучшим способом может быть создание общего буфера, который может сохранить последние 30 кадров. Теперь у вас есть кадры из всех потоков в вашем распоряжении. Или, может быть, я думаю, что для вашего конкретного случая, когда вы хотите, чтобы соединение оставалось установленным, но пакеты не отправляются, вам нужно написать прошивку для камеры, которая может находиться в текущей области. –