Created
August 14, 2018 04:36
-
-
Save yjxiong/ecaca3c28fd71ba75fe5fd46756a1e9d to your computer and use it in GitHub Desktop.
Sample code for tracking
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import cv2 | |
| import sys | |
| (major_ver, minor_ver, subminor_ver) = (cv2.__version__).split('.') | |
| assert minor_ver >= 2, "Must use opencv 3.2.x up" | |
| if __name__ == '__main__' : | |
| # Set up tracker. | |
| # Instead of MIL, you can also use | |
| tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN', 'MOSSE', 'CSRT'] | |
| tracker_type = tracker_types[2] | |
| tracker = cv2.TrackerMOSSE_create() | |
| # Read video | |
| video = cv2.VideoCapture("videos/chaplin.mp4") | |
| # Exit if video not opened. | |
| if not video.isOpened(): | |
| print "Could not open video" | |
| sys.exit() | |
| # Read first frame. | |
| ok, frame = video.read() | |
| if not ok: | |
| print 'Cannot read video file' | |
| sys.exit() | |
| # Define an initial bounding box | |
| bbox = (287, 23, 86, 320) | |
| # Uncomment the line below to select a different bounding box | |
| bbox = cv2.selectROI(frame, False) | |
| # Initialize tracker with first frame and bounding box | |
| ok = tracker.init(frame, bbox) | |
| while True: | |
| # Read a new frame | |
| ok, frame = video.read() | |
| if not ok: | |
| break | |
| # Start timer | |
| timer = cv2.getTickCount() | |
| # Update tracker | |
| ok, bbox = tracker.update(frame) | |
| # Calculate Frames per second (FPS) | |
| fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer); | |
| # Draw bounding box | |
| if ok: | |
| # Tracking success | |
| p1 = (int(bbox[0]), int(bbox[1])) | |
| p2 = (int(bbox[0] + bbox[2]), int(bbox[1] + bbox[3])) | |
| cv2.rectangle(frame, p1, p2, (255,0,0), 2, 1) | |
| else : | |
| # Tracking failure | |
| cv2.putText(frame, "Tracking failure detected", (100,80), cv2.FONT_HERSHEY_SIMPLEX, 0.75,(0,0,255),2) | |
| # Display tracker type on frame | |
| cv2.putText(frame, tracker_type + " Tracker", (100,20), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (50,170,50),2); | |
| # Display FPS on frame | |
| cv2.putText(frame, "FPS : " + str(int(fps)), (100,50), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (50,170,50), 2); | |
| # Display result | |
| cv2.imshow("Tracking", frame) | |
| # Exit if ESC pressed | |
| k = cv2.waitKey(1) & 0xff | |
| if k == 27 : break |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment