X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=src%2FMultiTracker.cpp;h=c87395ef3415c1da78da878eaa40aa2b9fcc568d;hb=b5f0328f4054d19fcf8a6b870d5448be8087d29c;hp=0b4dab5feb4d6fdec1606380c45cac472d4628f3;hpb=b8f65122758fbbecdb5574acfbca01fe8303c179;p=trackerpp.git diff --git a/src/MultiTracker.cpp b/src/MultiTracker.cpp index 0b4dab5..c87395e 100644 --- a/src/MultiTracker.cpp +++ b/src/MultiTracker.cpp @@ -31,10 +31,23 @@ MultiTracker::~MultiTracker() trackers.clear(); } +static Rect getRectInDetection(const Detection& d) +{ + Rect r; + r.x = d.center_x - d.width / 2; + r.y = d.center_y - d.height / 2; + r.width = d.width; + r.height = d.height; + return r; +} + static double calc_iou_ratio(const Detection& d1, const Detection& d2) { - // TODO - return 0.1; + Rect r1 = getRectInDetection (d1); + Rect r2 = getRectInDetection (d2); + Rect r_inner = r1 & r1; + Rect r_union = r1 | r2; + return 1.0 * r_inner.area() / r_union.area(); } static std::vector similarity(const PatchPtr p1, const PatchPtr p2) @@ -66,8 +79,7 @@ static std::vector similarity(const PatchPtr p1, const PatchPtr p2) double center_distance = sqrt(pow((d1.center_x - d2.center_x), 2) + pow((d1.center_y - d2.center_y), 2)); feature.push_back(center_distance / (d1.width + d1.height + d2.width + d2.height) * 4); - double iou_ratio = calc_iou_ratio(d1, d2); - feature.push_back(iou_ratio); + feature.push_back(calc_iou_ratio(d1, d2)); return feature; } @@ -141,12 +153,9 @@ void MultiTracker::update(unsigned int total, const Detection* detections, const PatchPtr pp = createPatch(image, dd); } -// Get image crop from input image within given bounding box - Detecinon static cv::Mat image_crop(const cv::Mat& image, const Detection& bb) { - // RECT - // TODO; - return image.clone(); + return image(getRectInDetection(bb)); } PatchPtr MultiTracker::createPatch(const Mat& image, const Detection& detect)