【发布时间】:2014-09-07 17:02:25
【问题描述】:
我正在尝试从连接到 USB 集线器的多个 USB 摄像头捕获单个帧。我写了一些我认为应该有效的东西,但它没有:(。最终结果会根据参数产生正确数量的图像,但除了最终结果之外的所有图像都是“空白”。
#include <opencv2/highgui/highgui.hpp>
#include <stdio.h>
#include <iostream>
using namespace cv;
int main(int argc, char** argv){
int numberOfCameras = atoi(argv[1]);
std::vector<Mat> frames (numberOfCameras-1);
for(int i=0; i<numberOfCameras; i++){
VideoCapture cap(i);
cap.set(CV_CAP_PROP_FRAME_WIDTH,320);
cap.set(CV_CAP_PROP_FRAME_HEIGHT,240);
Mat frame; cap >> frame;
frames.push_back(frame);
}
for(int i=0; i<numberOfCameras; i++){
string fileName = std::to_string(i) + ".jpg";
std::cout << fileName << std::endl;
imwrite(fileName, frames[i]);
}
}
这里发生了什么?我对 C++ 和一般类型的语言有点陌生。我误解了向量的使用吗?以上是完成我的任务的最佳方法吗?
我将连接更多的相机(总共 50 个),我很好奇在内存中存储 50 帧的影响。我什至可以在这么多摄像头上打开通话捕捉吗?
【问题讨论】:
标签: c++ opencv vector camera usb