以下のコードを使用して、カメラから各フレームを読み取り、それをベクトルにプッシュします。後でベクター内の収集されたすべてのフレームを処理するためにこれを行っています。
以下のコードを使用して、カメラからフレームを収集しました。しかし、2005 フレームの後、コードは以下のエラーをスローします。
OpenCV エラー: OutOfMemoryError、ファイル D:\Opencv\modules\core\src\alloc.cpp、行 52 のメモリ不足 (921604 バイトの割り当てに失敗)
以下は、フレームを収集してベクターにプッシュするために使用したコードです。
#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;
}