Skip to content

Commit a3fd96e

Browse files
author
SzabolcsGergely
committed
ObjectTracker: add force remove functionality; update object_tracker.py
1 parent 822709f commit a3fd96e

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

examples/ObjectTracker/object_tracker.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,11 @@
2929

3030
xlinkOut = pipeline.create(dai.node.XLinkOut)
3131
trackerOut = pipeline.create(dai.node.XLinkOut)
32+
xinTrackerConfig = pipeline.create(dai.node.XLinkIn)
3233

3334
xlinkOut.setStreamName("preview")
3435
trackerOut.setStreamName("tracklets")
36+
xinTrackerConfig.setStreamName("trackerConfig")
3537

3638
# Properties
3739
camRgb.setPreviewSize(300, 300)
@@ -64,18 +66,27 @@
6466
detectionNetwork.out.link(objectTracker.inputDetections)
6567
objectTracker.out.link(trackerOut.input)
6668

69+
# set tracking parameters
70+
objectTracker.setOcclusionRatioThreshold(0.4)
71+
objectTracker.setTrackletMaxLifespan(120)
72+
objectTracker.setTrackletBirthThreshold(3)
73+
74+
xinTrackerConfig.out.link(objectTracker.inputConfig)
75+
6776
# Connect to device and start pipeline
6877
with dai.Device(pipeline) as device:
6978

7079
preview = device.getOutputQueue("preview", 4, False)
7180
tracklets = device.getOutputQueue("tracklets", 4, False)
81+
trackerConfigQueue = device.getInputQueue("trackerConfig")
7282

7383
startTime = time.monotonic()
7484
counter = 0
7585
fps = 0
7686
frame = None
7787

7888
while(True):
89+
latestTrackedIds = []
7990
imgFrame = preview.get()
8091
track = tracklets.get()
8192

@@ -106,9 +117,26 @@
106117
cv2.putText(frame, t.status.name, (x1 + 10, y1 + 50), cv2.FONT_HERSHEY_TRIPLEX, 0.5, 255)
107118
cv2.rectangle(frame, (x1, y1), (x2, y2), color, cv2.FONT_HERSHEY_SIMPLEX)
108119

120+
if t.status == dai.Tracklet.TrackingStatus.TRACKED:
121+
latestTrackedIds.append(t.id)
122+
109123
cv2.putText(frame, "NN fps: {:.2f}".format(fps), (2, frame.shape[0] - 4), cv2.FONT_HERSHEY_TRIPLEX, 0.4, color)
110124

111125
cv2.imshow("tracker", frame)
112126

113-
if cv2.waitKey(1) == ord('q'):
127+
key = cv2.waitKey(1)
128+
if key == ord('q'):
114129
break
130+
elif key == ord('g'):
131+
# send tracker config to device
132+
config = dai.ObjectTrackerConfig()
133+
134+
# take a random ID from the latest tracked IDs
135+
if len(latestTrackedIds) > 0:
136+
idToRemove = (np.random.choice(latestTrackedIds))
137+
print(f"Force removing ID: {idToRemove}")
138+
config.forceRemoveID(idToRemove)
139+
trackerConfigQueue.send(config)
140+
else:
141+
print("No tracked IDs available to force remove")
142+

0 commit comments

Comments
 (0)