This contribution changes the way how trackers should be implemented by
programmer. It should be noted first, that from the user prospective,
Tracker::create() method still can be called with the same effect.
However, there's no more thing as a "constructor" for Tracker, they
should be created via static functions, e.g.
static Ptr<TrackerMIL> createTracker(const TrackerMIL::Params ¶meters=TrackerMIL::Params());
From the programmer's perspective now for every tracker what is declared
in tracker.hpp header is more a "interface", while the real
implementation class can (and has to) be implemented in .cpp file.
Changes in documentation are also included.
I've changed Rect to Rect2d in Tracker::update(), Tracker::init() and
all related methods (including documentation). This allows to initialize
trackers with double-valued rectangles, thus adding versality. Besides,
trackers also can output double-valued rectangles, which may be
beneficial in some scenarios.
However, it remains to change UML diagrams in documentation to tracker
module, as they still display methods above with old signatures.