我在OpenCV中使用KCF跟踪。一切都很好,我也可以跟踪一个对象,但我有一个问题: 我设置ROI和算法工作正常,有时我需要改变我的投资回报率。跟踪器应该重置并跟踪我的新投资回报率,但它不会。事实上,最后的投资回报率将保留在历史中,并对新的地点产生影响。
这也是我的代码摘要,我写了重要的一句话:
Rect2d roi;
Mat frame;
Ptr<Tracker> tracker = Tracker::create("KCF");
VideoCapture cap("C1_0001.mp4");
cap >> frame;
roi = selectROI("tracker", frame);
if (Condition = true)
{
roi = selectROI("tracker", frame);
}
tracker->init(frame, roi);
for (;; )
{
cap >> frame;
tracker->update(frame, roi);
}
当条件为真时,我想要改变roi。
答案 0 :(得分:2)
你需要打电话:
tracker->clear();
tracker = cv::Tracker::create("KCF");
tracker->init(frame, roi);
这里的问题已经解决了: OpenCV 3 Tracker won't work after reinitialization