Introduction
PyFastTrack is a Python library that provides an easy-to-use solution to integrate the FastTrack software tracking technology in Python projects. The tracking configuration and results will be entirely compatible with FastTrack.
Installation
pip install pyfasttrack
Examples
1from pyfasttrack.ft_detector import FtDetector
2from pyfasttrack.tracker import Tracker
3from pyfasttrack.data import Result
4import data as dat
5import cv2
6import os
7
8example_folder_path = os.path.dirname(os.path.abspath(__file__))
9
10# Load configuration
11config = dat.Configuration()
12params = config.read_toml(
13 "{}/test/data/images/Groundtruth/Tracking_Result/cfg.toml".format(example_folder_path))
14
15# Data saver
16saver = Result("{}/test/data/images/".format(example_folder_path))
17
18# Set up detector
19detector = FtDetector(params)
20detector.set_background(cv2.imread(
21 "{}/test/data/images/Groundtruth/Tracking_Result/background.pgm".format(example_folder_path), cv2.IMREAD_GRAYSCALE))
22
23# Set up tracker
24tracker = Tracker(params)
25tracker.set_params(params)
26tracker.set_detector(detector)
27
28camera = cv2.VideoCapture(
29 "{}/test/data/images/frame_%06d.pgm".format(example_folder_path))
30dat = tracker.initialize(cv2.cvtColor(camera.read()[1], cv2.COLOR_BGR2GRAY))
31saver.add_data(dat)
32
33ret = True
34while (ret):
35 ret, frame = camera.read()
36 if ret:
37 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
38 dat = tracker.process(frame)
39 saver.add_data(dat)
40
41camera.release()
1from pyfasttrack.yolo_detector import YoloDetector
2from pyfasttrack.tracker import Tracker
3from pyfasttrack.data import Result
4import cv2
5import os
6
7example_folder_path = os.path.dirname(os.path.abspath(__file__))
8
9# Data saver
10saver = Result("{}/test/data/images/".format(example_folder_path))
11
12# Set up detector
13# See https://github.com/ultralytics/ultralytics/blob/44c7c3514d87a5e05cfb14dba5a3eeb6eb860e70/ultralytics/datasets/coco.yaml for equivalence between coco labels and indexes
14yolo_params = {"model": "yolov8l-seg.pt", "classes": [2], "conf": 0.5}
15detector = YoloDetector(yolo_params)
16
17# Set up tracker
18params = {"spot": 2, "normDist": 1, "normAngle": 2,
19 "normArea": 1, "normPerim": 1, "maxDist": 500, "maxTime": 100}
20tracker = Tracker()
21tracker.set_params(params)
22tracker.set_detector(detector)
23
24camera = cv2.VideoCapture(
25 "{}/test/data/images/Nascar.mp4".format(example_folder_path))
26dat = tracker.initialize(camera.read()[1])
27saver.add_data(dat)
28
29ret = True
30while (ret):
31 ret, frame = camera.read()
32 if ret:
33 dat = tracker.process(frame)
34 saver.add_data(dat)
35
36camera.release()