Skip to content
Snippets Groups Projects

Redesign track kf

Merged Joan Solà Ortega requested to merge redesign-track_kf into devel
2 files
+ 35
8
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -220,8 +220,26 @@ CaptureBasePtr TrackMatrix::firstCapture(size_t _track_id)
Track TrackMatrix::trackAtKeyframes(size_t _track_id)
{
if (tracks_kf_.count(_track_id) > 0)
return tracks_kf_.at(_track_id);
// // This requires tracks_kf_
// if (tracks_kf_.count(_track_id) > 0)
// return tracks_kf_.at(_track_id);
// else
// return Track();
// This does not require any tracks_kf_; it assembles a track_kf on the fly by checking each capture's frame.
if (tracks_.count(_track_id))
{
Track track_kf;
for (auto& pair_ts_ftr : tracks_.at(_track_id))
{
auto& ts = pair_ts_ftr.first;
auto& ftr = pair_ts_ftr.second;
if (ftr && ftr->getCapture() && ftr->getCapture()->getFrame() && ftr->getCapture()->getFrame()->isKey())
track_kf[ts] = ftr;
}
return track_kf;
}
else
return Track();
}
@@ -250,14 +268,21 @@ bool TrackMatrix::markKeyframe(CaptureBasePtr _capture)
bool TrackMatrix::unmarkKeyframe(CaptureBasePtr _capture)
{
bool removed = false;
auto ts = _capture->getTimeStamp();
for (auto pair_id_trk : tracks_kf_)
if (_capture)
{
if (pair_id_trk.second.erase(ts))
auto ts = _capture->getTimeStamp();
for (auto& pair_id_trk : tracks_kf_)
{
if (pair_id_trk.second.empty())
tracks_kf_.erase(pair_id_trk.first);
removed = true;
if (pair_id_trk.second.erase(ts)) // remove feature from track
{
if (pair_id_trk.second.empty()) // remove empty tracks
{
tracks_kf_.erase(pair_id_trk.first);
if (tracks_kf_.empty())
break;
}
removed = true;
}
}
}
return removed;
Loading