32 colors_.emplace(0, cv::Scalar(38, 0, 165));
33 colors_.emplace(1, cv::Scalar(39, 48, 215));
34 colors_.emplace(2, cv::Scalar(67, 109, 244));
35 colors_.emplace(3, cv::Scalar(97, 174, 253));
36 colors_.emplace(4, cv::Scalar(139, 224, 254));
37 colors_.emplace(5, cv::Scalar(191, 255, 255));
38 colors_.emplace(6, cv::Scalar(139, 239, 217));
39 colors_.emplace(7, cv::Scalar(106, 217, 166));
40 colors_.emplace(8, cv::Scalar(99, 189, 102));
41 colors_.emplace(9, cv::Scalar(80, 152, 26));
42 colors_.emplace(10, cv::Scalar(55, 104, 0));
52 cv::Mat undistorted_image;
53 track_manager_.
cam()->undistortImage(cam.
image_, undistorted_image);
55 cv::Mat3b color_image = undistorted_image;
56 if (undistorted_image.channels() == 1)
58 cv::cvtColor(undistorted_image, color_image, cv::COLOR_GRAY2BGR, 3);
62 track_manager_.
cam()->undistortImage(cam.
mask_, mask);
63 mask = cv::Scalar(255) - mask;
65 std::vector<cv::Mat> channels;
66 cv::split(color_image, channels);
67 channels[2] = channels[2] + mask;
68 cv::merge(channels, color_image);
70 if (text.compare(
"") != 0)
72 cv::putText(color_image, text, cv::Point(50, 50), cv::FONT_HERSHEY_TRIPLEX, 1, cv::Scalar(255, 0, 0), 2);
76 std::unordered_set<uint> active_ids;
79 if (!active_ids.empty())
81 const auto& tracks = track_manager_.
tracks();
82 for (
auto&
id : active_ids)
84 const auto& color = colors_.at(
id % colors_.size());
85 for (
size_t i = 0; i < tracks.at(
id).size() - 1; ++i)
87 cv::line(color_image, tracks.at(
id).uvs_.at(i), tracks.at(
id).uvs_.at(i + 1), color, 1);
89 cv::circle(color_image, tracks.at(
id).uvs_.back(), 3, color, -1);