\brief CarsCounting::InitTracker \param grayFrame
| 172 | /// \param grayFrame |
| 173 | /// |
| 174 | bool CarsCounting::InitTracker(cv::UMat frame) |
| 175 | { |
| 176 | if (!m_trackerSettingsLoaded) |
| 177 | return false; |
| 178 | |
| 179 | if (m_drawHeatMap) |
| 180 | { |
| 181 | if (frame.channels() == 3) |
| 182 | m_keyFrame = frame.getMat(cv::ACCESS_READ).clone(); |
| 183 | else |
| 184 | cv::cvtColor(frame, m_keyFrame, cv::COLOR_GRAY2BGR); |
| 185 | m_heatMap = cv::Mat(m_keyFrame.size(), CV_32FC1, cv::Scalar::all(0)); |
| 186 | } |
| 187 | |
| 188 | const int minStaticTime = 5; |
| 189 | |
| 190 | TrackerSettings settings; |
| 191 | settings.SetDistance(tracking::DistJaccard); |
| 192 | settings.m_kalmanType = tracking::KalmanLinear; |
| 193 | settings.m_filterGoal = tracking::FilterCenter; |
| 194 | settings.m_lostTrackType = tracking::TrackCSRT; // Use KCF tracker for collisions resolving. Used if m_filterGoal == tracking::FilterRect |
| 195 | settings.m_matchType = tracking::MatchHungrian; |
| 196 | settings.m_dt = 0.3f; // Delta time for Kalman filter |
| 197 | settings.m_accelNoiseMag = 0.2f; // Accel noise magnitude for Kalman filter |
| 198 | settings.m_distThres = 0.7f; // Distance threshold between region and object on two frames |
| 199 | settings.m_minAreaRadiusPix = frame.rows / 20.f; |
| 200 | settings.m_maximumAllowedLostTime = 2.; // Maximum allowed lost time |
| 201 | |
| 202 | settings.AddNearTypes(TypeConverter::Str2Type("car"), TypeConverter::Str2Type("bus"), false); |
| 203 | settings.AddNearTypes(TypeConverter::Str2Type("car"), TypeConverter::Str2Type("truck"), false); |
| 204 | settings.AddNearTypes(TypeConverter::Str2Type("person"), TypeConverter::Str2Type("bicycle"), true); |
| 205 | settings.AddNearTypes(TypeConverter::Str2Type("person"), TypeConverter::Str2Type("motorbike"), true); |
| 206 | |
| 207 | settings.m_useAbandonedDetection = false; |
| 208 | if (settings.m_useAbandonedDetection) |
| 209 | { |
| 210 | settings.m_minStaticTime = minStaticTime; |
| 211 | settings.m_maxStaticTime = 60; |
| 212 | settings.m_maximumAllowedLostTime = settings.m_minStaticTime; // Maximum allowed lost time |
| 213 | settings.m_maxTraceLength = 2 * settings.m_maximumAllowedLostTime; // Maximum trace length |
| 214 | } |
| 215 | else |
| 216 | { |
| 217 | settings.m_maximumAllowedLostTime = 10.; // Maximum allowed lost time |
| 218 | settings.m_maxTraceLength = 4.; // Maximum trace length |
| 219 | } |
| 220 | |
| 221 | m_tracker = BaseTracker::CreateTracker(settings); |
| 222 | |
| 223 | ReadGeobindings(frame.size()); |
| 224 | return true; |
| 225 | } |
| 226 | |
| 227 | /// |
| 228 | /// \brief CarsCounting::DrawData |
nothing calls this directly
no test coverage detected