MCPcopy Create free account
hub / github.com/Smorodov/Multitarget-tracker / UpdateTrackingState

Method UpdateTrackingState

src/Tracker/Ctracker.cpp:172–459  ·  view source on GitHub ↗

\brief CTracker::UpdateTrackingState \param regions \param currFrame \param fps

Source from the content-addressed store, hash-verified

170/// \param fps
171///
172void CTracker::UpdateTrackingState(const regions_t& regions,
173 cv::UMat currFrame,
174 time_point_t frameTime)
175{
176 const size_t colsTracks = m_tracks.size(); // Tracking objects
177 const size_t rowsRegions = regions.size(); // Detections or regions
178
179 assignments_t assignmentT2R(colsTracks, -1); // Assignments: index - track, value - region
180
181 std::vector<RegionEmbedding> regionEmbeddings;
182 CalcEmbeddins(regionEmbeddings, regions, currFrame);
183
184#if DRAW_DBG_ASSIGNMENT
185 std::cout << "CTracker::UpdateTrackingState: m_tracks = " << colsTracks << ", regions = " << rowsRegions << std::endl;
186
187 int fontType = cv::FONT_HERSHEY_TRIPLEX;
188 double fontSize = 0.6;
189 cv::Scalar colorRegionEllow(0, 255, 255);
190 cv::Scalar colorMatchedAboveThreshRed(0, 0, 255);
191 cv::Scalar colorMatchedGreen(0, 255, 0);
192 cv::Scalar colorMatchedNearMargenta(255, 0, 255);
193 cv::Scalar colorNotMatchedNearWhite(255, 255, 255);
194 cv::Scalar colorUnknownBlue(255, 0, 0);
195
196 auto DrawRRect = [](cv::Mat& img, const cv::RotatedRect& rr, const cv::Scalar& cl, int thikness)
197 {
198 cv::Point2f rectPoints[4];
199 rr.points(rectPoints);
200 for (int i = 0; i < 4; ++i)
201 {
202 cv::line(img, rectPoints[i], rectPoints[(i + 1) % 4], cl, thikness, cv::LINE_4);
203 }
204 };
205
206 cv::Mat dbgAssignment = currFrame.getMat(cv::ACCESS_READ).clone();
207 {
208#if 0
209 cv::Mat foreground(dbgAssignment.size(), CV_8UC1, cv::Scalar(0, 0, 100));
210 for (const auto& track : m_tracks)
211 {
212#if (CV_VERSION_MAJOR < 4)
213 cv::ellipse(foreground, track->GetLastRect(), cv::Scalar(255, 255, 255), CV_FILLED);
214#else
215 cv::ellipse(foreground, track->GetLastRect(), cv::Scalar(255, 255, 255), cv::FILLED);
216#endif
217 }
218
219 const int chans = dbgAssignment.channels();
220 const int height = dbgAssignment.rows;
221#pragma omp parallel for
222 for (int y = 0; y < height; ++y)
223 {
224 uchar* imgPtr = dbgAssignment.ptr(y);
225 const uchar* frgrndPtr = foreground.ptr(y);
226 for (int x = 0; x < dbgAssignment.cols; ++x)
227 {
228 for (int ci = chans - 1; ci < chans; ++ci)
229 {

Callers

nothing calls this directly

Calls 15

CRegionClass · 0.85
cloneMethod · 0.80
GetLastRectMethod · 0.80
ptrMethod · 0.80
ID2StrMethod · 0.80
GetIDMethod · 0.80
GetLostPeriodMethod · 0.80
IsOutOfTheFrameMethod · 0.80
IsStaticTimeoutMethod · 0.80
eraseMethod · 0.80
beginMethod · 0.80
endMethod · 0.80

Tested by

no test coverage detected