#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/tracking.hpp"
#include
#include
using namespace cv;
using namespace std;
int test(int argc, char* argv[])
{
Rect2d roi;
Mat frame;
Ptr trackers[100] ;
VideoCapture cap("test.mp4");
int fps = cap.get(CAP_PROP_FPS);
cap >> frame;
roi = Rect2d(114, 114, 75, 75); //test
for (int i = 0;i<100;i++)
{
trackers[i] = Tracker::create("KCF") ;
trackers[i]->init(frame,roi);
}
int in = 0;
for (int index = 0;index<1000;index++)
{
cap >> frame;
if(frame.data==NULL)
{
printf("Video end--------.\n");
break;
}
cv::Rect2d tmRect;
for(int j = 0; j<100;j++)
{
start = clock();
static int index = 0;
index++;
if(0!=index%10)
{
trackers[j]->update(frame,tmRect);
} else
{
trackers[j] = TrackerKCF::create() ;
trackers[j]->init(frame,roi);
}
}
std::cout<<in<<std::endl;
in++;
}
for(int i = 0;i<100;i++)
{
trackers[i]->clear();
trackers[i].release();
}
cap.release();
return 0;
}
int main(int argc, char* argv[])
{
int ret = test(argc,argv); //memory not free
return ret;
}
当test()返回后,内存没有释放,这是为何?