4444#include < sensor_msgs/image_encodings.h>
4545
4646#include < opencv2/tracking.hpp>
47+ // Since 4.5.1, tracking has new API https://github.com/opencv/opencv_contrib/pull/2737
48+ #if (CV_VERSION_MAJOR >= 4 && CV_VERSION_MINOR >= 5)
49+ #include < opencv2/tracking/tracking_legacy.hpp>
50+ using namespace cv ::legacy;
51+ #define TrackingAPI (f ) upgradeTrackingAPI(f)
52+ #else
53+ using namespace cv ;
54+ #define TrackingAPI (f ) f
55+ #endif
4756#include < opencv2/highgui/highgui.hpp>
4857#include < opencv2/imgproc/imgproc.hpp>
4958
@@ -85,7 +94,9 @@ class TrackingNodelet : public opencv_apps::Nodelet
8594 int tracking_algorithm_;
8695
8796 cv::Ptr<cv::Tracker> tracker_;
88- cv::TrackerKCF::Params params_;
97+ #if (CV_VERSION_MAJOR >= 4 && CV_VERSION_MINOR >= 5)
98+ #define Rect2d Rect
99+ #endif
89100 cv::Rect2d roi_;
90101
91102public:
@@ -240,19 +251,19 @@ class TrackingNodelet : public opencv_apps::Nodelet
240251 ROS_INFO (" Create MIL (Multiple Instance Learning) tracker" );
241252 break ;
242253 case opencv_apps::Tracking_BOOSTING:
243- tracker_ = cv:: TrackerBoosting::create ();
254+ tracker_ = TrackingAPI ( TrackerBoosting::create () );
244255 ROS_INFO (" Create On-line version of the AdaBoost tracker" );
245256 break ;
246257 case opencv_apps::Tracking_MEDIANFLOW:
247- tracker_ = cv:: TrackerMedianFlow::create ();
258+ tracker_ = TrackingAPI ( TrackerMedianFlow::create () );
248259 ROS_INFO (" Create Median Flow tracker" );
249260 break ;
250261 case opencv_apps::Tracking_TLD:
251- tracker_ = cv:: TrackerTLD::create ();
262+ tracker_ = TrackingAPI ( TrackerTLD::create () );
252263 ROS_INFO (" Create TLD (Tracking, learning and detection) tracker" );
253264 break ;
254265 case opencv_apps::Tracking_KCF:
255- tracker_ = cv::TrackerKCF::create (params_ );
266+ tracker_ = cv::TrackerKCF::create ();
256267 ROS_INFO (" Create KCF (Kernelized Correlation Filter) tracker" );
257268 break ;
258269 case opencv_apps::Tracking_GOTURN:
@@ -278,7 +289,7 @@ class TrackingNodelet : public opencv_apps::Nodelet
278289 }
279290 break ;
280291 case opencv_apps::Tracking_MOSSE:
281- tracker_ = cv:: TrackerMOSSE::create ();
292+ tracker_ = TrackingAPI ( TrackerMOSSE::create () );
282293 ROS_INFO (" Create MOSSE (Minimum Output Sum of Squared Error) tracker" );
283294 break ;
284295 }
0 commit comments