40 colors_.emplace(0, cv::Scalar(38, 0, 165));
41 colors_.emplace(1, cv::Scalar(39, 48, 215));
42 colors_.emplace(2, cv::Scalar(67, 109, 244));
43 colors_.emplace(3, cv::Scalar(97, 174, 253));
44 colors_.emplace(4, cv::Scalar(139, 224, 254));
45 colors_.emplace(5, cv::Scalar(191, 255, 255));
46 colors_.emplace(6, cv::Scalar(139, 239, 217));
47 colors_.emplace(7, cv::Scalar(106, 217, 166));
48 colors_.emplace(8, cv::Scalar(99, 189, 102));
49 colors_.emplace(9, cv::Scalar(80, 152, 26));
50 colors_.emplace(10, cv::Scalar(55, 104, 0));
60 cv::Mat undistorted_image;
61 track_manager_.cam()->undistortImage(cam.
image_, undistorted_image);
63 cv::Mat3b color_image = undistorted_image;
64 if (undistorted_image.channels() == 1)
66 cv::cvtColor(undistorted_image, color_image, cv::COLOR_GRAY2BGR, 3);
70 track_manager_.cam()->undistortImage(cam.
mask_, mask);
71 mask = cv::Scalar(255) - mask;
73 std::vector<cv::Mat> channels;
74 cv::split(color_image, channels);
75 channels[2] = channels[2] + mask;
76 cv::merge(channels, color_image);
78 if (text.compare(
"") != 0)
80 cv::putText(color_image, text, cv::Point(50, 50), cv::FONT_HERSHEY_TRIPLEX, 1, cv::Scalar(255, 0, 0), 2);
84 std::unordered_set<uint> active_ids;
86 track_manager_.activeTracksIds(cam.
timestamp_, active_ids);
87 if (!active_ids.empty())
89 const auto& tracks = track_manager_.tracks();
90 for (
auto&
id : active_ids)
92 const auto& color = colors_.at(
id % colors_.size());
93 for (
size_t i = 0; i < tracks.at(
id).size() - 1; ++i)
95 cv::line(color_image, tracks.at(
id).uvs_.at(i), tracks.at(
id).uvs_.at(i + 1), color, 1);
97 cv::circle(color_image, tracks.at(
id).uvs_.back(), 3, color, -1);