#!/usr/bin/python | |
# The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt | |
# | |
# This example shows how to use the correlation_tracker from the dlib Python | |
# library. This object lets you track the position of an object as it moves | |
# from frame to frame in a video sequence. To use it, you give the | |
# correlation_tracker the bounding box of the object you want to track in the | |
# current video frame. Then it will identify the location of the object in | |
# subsequent frames. | |
# | |
# In this particular example, we are going to run on the | |
# video sequence that comes with dlib, which can be found in the | |
# examples/video_frames folder. This video shows a juice box sitting on a table | |
# and someone is waving the camera around. The task is to track the position of | |
# the juice box as the camera moves around. | |
# | |
# | |
# COMPILING/INSTALLING THE DLIB PYTHON INTERFACE | |
# You can install dlib using the command: | |
# pip install dlib | |
# | |
# Alternatively, if you want to compile dlib yourself then go into the dlib | |
# root folder and run: | |
# python setup.py install | |
# | |
# Compiling dlib should work on any operating system so long as you have | |
# CMake installed. On Ubuntu, this can be done easily by running the | |
# command: | |
# sudo apt-get install cmake | |
# | |
# Also note that this example requires Numpy which can be installed | |
# via the command: | |
# pip install numpy | |
import os | |
import glob | |
import dlib | |
# Path to the video frames | |
video_folder = os.path.join("..", "examples", "video_frames") | |
# Create the correlation tracker - the object needs to be initialized | |
# before it can be used | |
tracker = dlib.correlation_tracker() | |
win = dlib.image_window() | |
# We will track the frames as we load them off of disk | |
for k, f in enumerate(sorted(glob.glob(os.path.join(video_folder, "*.jpg")))): | |
print("Processing Frame {}".format(k)) | |
img = dlib.load_rgb_image(f) | |
# We need to initialize the tracker on the first frame | |
if k == 0: | |
# Start a track on the juice box. If you look at the first frame you | |
# will see that the juice box is contained within the bounding | |
# box (74, 67, 112, 153). | |
tracker.start_track(img, dlib.rectangle(74, 67, 112, 153)) | |
else: | |
# Else we just attempt to track from the previous frame | |
tracker.update(img) | |
win.clear_overlay() | |
win.set_image(img) | |
win.add_overlay(tracker.get_position()) | |
dlib.hit_enter_to_continue() | |