Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion modules/tracking/src/gtrTracker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,9 @@ class TrackerGOTURNModel : public TrackerModel{
public:
TrackerGOTURNModel(TrackerGOTURN::Params){}
Rect2d getBoundingBox(){ return boundingBox_; }
void setBoudingBox(Rect2d boundingBox){ boundingBox_ = boundingBox; }
void setBoudingBox(Rect2d boundingBox) {
boundingBox_ = boundingBox & Rect2d(Point(0, 0), image_.size());;
}
Mat getImage(){ return image_; }
void setImage(const Mat& image){ image.copyTo(image_); }
protected:
Expand Down Expand Up @@ -137,6 +139,11 @@ bool TrackerGOTURNImpl::updateImpl(const Mat& image, Rect2d& boundingBox)
targetPatchRect.x = (float)(prevCenter.x - prevBB.width*padTargetPatch / 2.0 + targetPatchRect.width);
targetPatchRect.y = (float)(prevCenter.y - prevBB.height*padTargetPatch / 2.0 + targetPatchRect.height);

targetPatchRect.width = std::min(targetPatchRect.width, (float)prevFrame.cols);
targetPatchRect.height = std::min(targetPatchRect.height, (float)prevFrame.rows);
targetPatchRect.x = std::max(-prevFrame.cols * 0.5f, std::min(targetPatchRect.x, prevFrame.cols * 1.5f));
targetPatchRect.y = std::max(-prevFrame.rows * 0.5f, std::min(targetPatchRect.y, prevFrame.rows * 1.5f));

copyMakeBorder(prevFrame, prevFramePadded, (int)targetPatchRect.height, (int)targetPatchRect.height, (int)targetPatchRect.width, (int)targetPatchRect.width, BORDER_REPLICATE);
targetPatch = prevFramePadded(targetPatchRect).clone();

Expand Down
16 changes: 16 additions & 0 deletions modules/tracking/test/test_trackers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -567,6 +567,22 @@ TEST_P(DistanceAndOverlap, Scaled_Data_CSRT)
test.run();
}

TEST(GOTURN, memory_usage)
{
cv::Rect2d roi(145, 70, 85, 85);
cv::Mat frame;
cv::Ptr<cv::Tracker> tracker = cv::TrackerGOTURN::create();
string folder = cvtest::TS::ptr()->get_data_path() + "tracking/david/data/david.webm";
cv::VideoCapture video( folder );
video >> frame;
tracker->init(frame, roi);
for (;; ) {
video >> frame;
if (frame.empty())
break;
tracker->update(frame, roi);
}
}

INSTANTIATE_TEST_CASE_P( Tracking, DistanceAndOverlap, TESTSET_NAMES);

Expand Down