\brief CTracker::UpdateTrackingState \param regions \param currFrame \param fps
| 170 | /// \param fps |
| 171 | /// |
| 172 | void 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 | { |
nothing calls this directly
no test coverage detected