我使用下面的代码从相机读取每一帧并将其推送到向量。我这样做是为了稍后处理向量中所有收集的帧。
我使用下面的代码从相机收集帧。但是在 2005 帧之后,代码会引发以下错误。
OpenCV 错误:OutOfMemoryError 中的内存不足(无法分配 921604 字节),文件 D:\Opencv\modules\core\src\alloc.cpp,第 52 行
下面是我用来收集帧并将其推送到向量中的代码。
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/contrib/contrib.hpp"
#include <stdio.h>
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <stdlib.h>
using namespace std;
using namespace cv;
int main()
{
VideoCapture capture(0);
if(!capture.isOpened())
return -1;
vector <Mat> frame;
int delay = 10;
int count = 0;
Mat src;
while(true) {
capture >> src;
frame.push_back(src.clone());
imshow("VIDEO", src);
if( waitKey( delay ) >= 0) break;
count = count+1;
cout << count << endl;
}
/* I need to process each frame stored inside the vector*/
destroyWindow("VIDEO");
capture.release();
return 0;
}