#pragma once #include "Ctracker.h" #include #include #include "dataReader.h" bool InitTracker(cv::UMat frame, CTracker& tracker) { TrackerSettings settings; settings.SetDistance(tracking::DistRects); settings.m_kalmanType = tracking::KalmanLinear; settings.m_filterGoal = tracking::FilterRect; settings.m_lostTrackType = tracking::TrackNone; // Use visual objects tracker for collisions resolving settings.m_matchType = tracking::MatchHungrian; settings.m_useAcceleration = false; // Use constant acceleration motion model settings.m_dt = settings.m_useAcceleration ? 0.05f : 0.2f; // Delta time for Kalman filter settings.m_accelNoiseMag = 0.2f; // Accel noise magnitude for Kalman filter settings.m_distThres = 0.95f; // Distance threshold between region and object on two frames #if 1 settings.m_minAreaRadiusPix = frame.rows / 20.f; #else settings.m_minAreaRadiusPix = -1.f; #endif settings.m_minAreaRadiusK = 0.8f; settings.m_useAbandonedDetection = true; if (settings.m_useAbandonedDetection) { settings.m_minStaticTime = 5; settings.m_maxStaticTime = 10; settings.m_maximumAllowedSkippedFrames = 30; // Maximum allowed skipped frames settings.m_maxTraceLength = 60; // Maximum trace length } else { settings.m_maximumAllowedSkippedFrames = 30; // Maximum allowed skipped frames settings.m_maxTraceLength = 60; // Maximum trace length } tracker.setSettings(settings); return true; } void Track(cv::Mat frame, const regions_t& regions, CTracker& tracker) { cv::UMat uframe; if (tracker.CanColorFrameToTrack()) { uframe = frame.getUMat(cv::ACCESS_READ); } else { cv::cvtColor(frame, uframe, cv::COLOR_BGR2GRAY); } tracker.Update(regions, uframe, 30); } // ---------------------------------------------------------------------- void Tracking(cv::Mat frame, std::vector& boxes, CTracker& tracker) { regions_t regions; for(int i=0;i0?w:w+1,h>0?h:h+1); CRegion region = CRegion(rect,std::to_string(boxes[i].classId),boxes[i].score); regions.push_back(region); //std::cout<<"l,r,t,b:"<