Aktivierung des Thread-Lock, um Kollisionen beim Zugriff auf die Liste hinter der Referenz self.posList zu verhindern
Speicherung des Tracking-Ergebniss in self.posList
Freigabe des Thread-Lock
puck_kcf.py
__init__(self, identifier, track_window)
Speicherung der übergebenen Daten
setupValues(self, frame)
Erzeugung des KCF-Tracker-Objekts
Initialisierung des KCF-Trackers mithilfe der Box des entsprechenden Pucks und dem übergebenen Frame
track(self, frame, frameCopy, threadLock = None)
Aufruf des Tracking-Algorithmus
Falls erfolgreich, Darstellung des Tracking-Ergebnisses, falls notwendig unter Benutzung des Thread-Lokc
Bei Fehlschlag, Markierung des Pucks als nicht verfolgbar und Inkrementierung eines Frame-Zählers, wie lange der Puck nicht verfolgt werden konnte
Ist der Puck mahr als 5 Frames nicht verfolgbar, wird die letzte bekannte Position als nutzlos eingestuft und die Verfolgung dieses Pucks durch Markierung als nicht nutzbar und den Aufruf von multi_tracker.notifyPuckHardFail() aufgegeben
Rückgabe der in vier Eckkoordinaten umgerechneten Positionsdaten
checkBoxRelation(self, box)
Überprüft, ob sich die letzte bekannte Position dieses Pucks in der übergebenen Box befindet
notifyRecovered(self, newBox, frame)
Speicherung der neuen, mithilfe der Kaskade wiedergefundenen, Box dieses Pucks und Zurücksetzung der Fehlschlag-Markierungen und Zähler
drawMarkerOnFrame(self, frameCopy)
Darstellung der derzeitigen Position dieses Pucks auf dem übergebenen Frame
printIndizes(self, frameCopy)
Darstellung des Index dieses Pucks auf dem übergebenen Frame auf der Position dieses Pucks
cascade.py
findPucksInitial(cascadeFile, frame)
Laden der HAAR-Kaskade aus dem übergebenen Datei cascadeFile
Aufruf von findPucks() zur Lokalisierung der Pucks auf dem übergebenen Frame
findPucks(frame)
Konvertierung des übergebenen Frames in Graustufen
Lokalisierung der Pucks auf dem Graustufen-Bild mithilfe der zuvor geladenen HAAR-Kaskade
Konvertierung der Daten aus der Kaskade in Tuple
Rückgabe der Ergebnisse als Liste von Tuplen
utils.py
getCoordsFromXYWH(data)
Konvertierung der übergebenen Daten (Koordinaten der linken oberen Ecke und Breite und Höhe eines Rechtecks) in eine Liste mit den Koordinaten aller vier Ecken im Uhrzeigersinn, angefangen mit der oberen linken Ecke
doesBox1ContainBox2(box1, box2)
Überprüft, ob sich box2 vollständig in box1 befindet
doesBoxContainCoords(box, coords)
Überprüft, ob sich die Box coords in Koordinatenform vollständig in der Box box (obere linke Ecke und Breite und Höhe) befindet
checkSizeOK(box)
Überprüft, ob die übergebene Box mindestens so groß, wie die Boxen, die an den Tracker übergeben werden (festgelegt durch dotSize) und kleiner als die maximale Boxgröße boxSizeMax ist
filterDuplicates(boxes)
Filtert alle Boxen aus der übergebenen Liste boxes heraus, die sich vollständig in einer anderen Box in dieser Liste befinden
shrinkBox(box)
Verkleinert die übergebene Box auf eine einheitliche Größe für den Tracker (festgelegt durch dotSize)
enlargeBox(box, size)
Vergrößert die übergebene Box auf die übergebene Größe
millis()
Gibt die derzeitige Systemzeit in Millisekunden als Integer zurück
clockStringFromSecs(secs)
Konvertiert die übergebene Zeit in Sekunden in einen Zeit-String der Form HH:MM:SS
Autor: Dennis Claußner
ss18/tracker.txt · Zuletzt geändert: 2018/08/24 18:05 von dclaussner