我们使用opencv3测试KCF跟踪器。使我们感到困惑的是内存占用。删除跟踪器后,内存仍被占用。 在运行KCF之后如何释放所有分配的内存?
这是取决于opencv 3.4的示例代码:
#include <opencv2/core/utility.hpp>
#include <opencv2/tracking.hpp>
#include <opencv2/tracking/tracker.hpp>
#include <opencv2/highgui.hpp>
#include <unistd.h>
using namespace std;
using namespace cv;
int main() {
Mat frame=imread("/home/images/D1.png");
Rect2d roi(1,1,200,200);
Ptr<TrackerKCF> tracker_tt = TrackerKCF::create();
tracker_tt->init(frame, roi);
tracker_tt->update(frame,roi); //simplify issue tracking on the same image
tracker_tt.release();
frame.release();
cout<<"track finished!"<<endl;
cin.get();
return 0;
}
我们用
停止程序cin.get()
,以便我们可以检查内存使用状态。 运行示例代码后,htop类似于: memory usage