diff --git a/validation/create_ground_truth.py b/validation/create_ground_truth.py index c9f56f0..5c6e3c0 100644 --- a/validation/create_ground_truth.py +++ b/validation/create_ground_truth.py @@ -1,97 +1,66 @@ import cv2 import sys -(major_ver, minor_ver, subminor_ver) = (cv2.__version__).split('.') - -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[1] - - if int(minor_ver) < 3: - tracker = cv2.Tracker_create(tracker_type) - else: - if tracker_type == 'BOOSTING': - tracker = cv2.TrackerBoosting_create() - if tracker_type == 'MIL': - tracker = cv2.TrackerMIL_create() - if tracker_type == 'KCF': - tracker = cv2.TrackerKCF_create() - if tracker_type == 'TLD': - tracker = cv2.TrackerTLD_create() - if tracker_type == 'MEDIANFLOW': - tracker = cv2.TrackerMedianFlow_create() - if tracker_type == 'GOTURN': - tracker = cv2.TrackerGOTURN_create() - if tracker_type == 'MOSSE': - tracker = cv2.TrackerMOSSE_create() - if tracker_type == "CSRT": - tracker = cv2.TrackerCSRT_create() - - # Read video - video = cv2.VideoCapture("./validation/TestVideo.mp4") - - # Exit if video not opened. - if not video.isOpened(): - print("Could not open video") - sys.exit() - - # Read first frame. +tracker = cv2.TrackerMIL_create() + +# Read video +video = cv2.VideoCapture("./validation/TestVideo.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 = (857, 189, 346, 434) + +# Initialize tracker with first frame and bounding box +ok = tracker.init(frame, bbox) + +frame_count = 0 +while True: + # Read a new frame ok, frame = video.read() if not ok: - print('Cannot read video file') - sys.exit() - - # Define an initial bounding box - bbox = (857, 189, 346, 434) - - # Initialize tracker with first frame and bounding box - ok = tracker.init(frame, bbox) - - frame_count = 0 - 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])) + break + + # Start timer + timer = cv2.getTickCount() - with open("./ground_truth.txt", 'a') as output_file: - output_file.write(f"{frame_count}, {p1[0]}, {p1[1]}, {p2[0]}, {p2[1]}\n") + # Update tracker + ok, bbox = tracker.update(frame) - 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) + # Calculate Frames per second (FPS) + fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer); - frame_count += 1 - - # Exit if ESC pressed - k = cv2.waitKey(1) & 0xff - if k == 27 : break \ No newline at end of file + # 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])) + + with open("./ground_truth.txt", 'a') as output_file: + output_file.write(f"{frame_count}, {p1[0]}, {p1[1]}, {p2[0]}, {p2[1]}\n") + + 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 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) + + frame_count += 1 + + # Exit if ESC pressed + k = cv2.waitKey(1) & 0xff + if k == 27 : break \ No newline at end of file