diff --git a/modules/tracking/include/opencv2/tracking/tracker.hpp b/modules/tracking/include/opencv2/tracking/tracker.hpp index 76b032a78..04660d6a6 100644 --- a/modules/tracking/include/opencv2/tracking/tracker.hpp +++ b/modules/tracking/include/opencv2/tracking/tracker.hpp @@ -565,7 +565,12 @@ class CV_EXPORTS_W Tracker : public virtual Algorithm virtual void read( const FileNode& fn )=0; virtual void write( FileStorage& fs ) const=0; - public: + Ptr getModel() + { + return model; + } + + protected: virtual bool initImpl( const Mat& image, const Rect2d& boundingBox ) = 0; virtual bool updateImpl( const Mat& image, Rect2d& boundingBox ) = 0; diff --git a/modules/tracking/src/multiTracker.cpp b/modules/tracking/src/multiTracker.cpp index 78f0ee125..3053f2174 100644 --- a/modules/tracking/src/multiTracker.cpp +++ b/modules/tracking/src/multiTracker.cpp @@ -91,7 +91,7 @@ namespace cv Tracker* trackerPtr = trackers[0]; tld::TrackerTLDImpl* tracker = static_cast(trackerPtr); //TLD Model Extraction - tld::TrackerTLDModel* tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->model)); + tld::TrackerTLDModel* tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->getModel())); Ptr data = tracker->data; double scale = data->getScale(); @@ -130,7 +130,7 @@ namespace cv trackerPtr = trackers[k]; tracker = static_cast(trackerPtr); //TLD Model Extraction - tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->model)); + tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->getModel())); data = tracker->data; data->frameNum++; @@ -247,7 +247,7 @@ namespace cv Tracker* trackerPtr = trackers[0]; cv::tld::TrackerTLDImpl* tracker = static_cast(trackerPtr); //TLD Model Extraction - tld::TrackerTLDModel* tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->model)); + tld::TrackerTLDModel* tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->getModel())); Size initSize = tldModel->getMinSize(); for (int k = 0; k < (int)trackers.size(); k++) @@ -311,7 +311,7 @@ namespace cv trackerPtr = trackers[k]; tracker = static_cast(trackerPtr); //TLD Model Extraction - tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->model)); + tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->getModel())); //Optimized variance calculation bool varPass = (windowVar > tld::VARIANCE_THRESHOLD * *tldModel->detector->originalVariancePtr); @@ -340,7 +340,7 @@ namespace cv trackerPtr = trackers[k]; tracker = static_cast(trackerPtr); //TLD Model Extraction - tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->model)); + tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->getModel())); for (int i = 0; i < (int)varBuffer[k].size(); i++) @@ -382,7 +382,7 @@ namespace cv trackerPtr = trackers[k]; tracker = static_cast(trackerPtr); //TLD Model Extraction - tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->model)); + tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->getModel())); npos = 0; nneg = 0; @@ -441,7 +441,7 @@ namespace cv Tracker* trackerPtr = trackers[0]; cv::tld::TrackerTLDImpl* tracker = static_cast(trackerPtr); //TLD Model Extraction - tld::TrackerTLDModel* tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->model)); + tld::TrackerTLDModel* tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->getModel())); Size initSize = tldModel->getMinSize(); for (int k = 0; k < (int)trackers.size(); k++) @@ -505,7 +505,7 @@ namespace cv trackerPtr = trackers[k]; tracker = static_cast(trackerPtr); //TLD Model Extraction - tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->model)); + tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->getModel())); //Optimized variance calculation bool varPass = (windowVar > tld::VARIANCE_THRESHOLD * *tldModel->detector->originalVariancePtr); @@ -534,7 +534,7 @@ namespace cv trackerPtr = trackers[k]; tracker = static_cast(trackerPtr); //TLD Model Extraction - tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->model)); + tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->getModel())); for (int i = 0; i < (int)varBuffer[k].size(); i++) @@ -576,7 +576,7 @@ namespace cv trackerPtr = trackers[k]; tracker = static_cast(trackerPtr); //TLD Model Extraction - tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->model)); + tldModel = ((tld::TrackerTLDModel*)static_cast(tracker->getModel())); npos = 0; nneg = 0; maxSc = -5.0;