/*---------------------------------------------- * Usage: * example_tracking_kcf * * example: * example_tracking_kcf Bolt/img/%04.jpg * example_tracking_kcf faceocc2.webm *--------------------------------------------------*/ #include #include #include #include #include #include #include "samples_utility.hpp" using namespace std; using namespace cv; int main( int argc, char** argv ){ // show help if(argc<2){ cout<< " Usage: example_tracking_kcf \n" " examples:\n" " example_tracking_kcf Bolt/img/%04.jpg\n" " example_tracking_kcf faceocc2.webm\n" << endl; return 0; } // create the tracker Ptr tracker = TrackerKCF::create(); // set input video std::string video = argv[1]; VideoCapture cap(video); Mat frame; // get bounding box cap >> frame; Rect2d roi= selectROI("tracker", frame, true, false); //quit if ROI was not selected if(roi.width==0 || roi.height==0) return 0; // initialize the tracker tracker->init(frame,roi); // do the tracking printf("Start the tracking process, press ESC to quit.\n"); for ( ;; ){ // get frame from the video cap >> frame; // stop the program if no more images if(frame.rows==0 || frame.cols==0) break; // update the tracking result bool isfound = tracker->update(frame,roi); if(!isfound) { cout << "The target has been lost...\n"; waitKey(0); return 0; } // draw the tracked object rectangle( frame, roi, Scalar( 255, 0, 0 ), 2, 1 ); // show image with the tracked object imshow("tracker",frame); //quit on ESC button if(waitKey(1)==27)break; } }