Skip to content

Commit 7a73b3b

Browse files
correction module enhanced with better navigation
1 parent a0bf57f commit 7a73b3b

File tree

4 files changed

+130
-9
lines changed

4 files changed

+130
-9
lines changed

correctionFeature.py

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
import cv2
2+
import sys
3+
4+
#do not forget to change the three variables below
5+
video_source = "/video/%04d.png"
6+
groundtruth_report_dir = "/foo1/bar1.txt"
7+
reviewed_GT_report_dir = "/foo1/bar2.txt"
8+
9+
def report_reviewedGT(ground_truth_data):
10+
reviewed_GT_file = open(reviewed_GT_report_dir, "w")
11+
12+
for key in sorted(ground_truth_data.keys()):
13+
reviewed_GT_file.write(str(ground_truth_data[key][0])+" "+str(ground_truth_data[key][1])+" "+str(ground_truth_data[key][2])+" "+str(ground_truth_data[key][3])+"\n")
14+
15+
reviewed_GT_file.close()
16+
17+
18+
if __name__ == '__main__':
19+
frameNumber = 0
20+
editCount = 0
21+
#set Ground truth bounding box coordinate text file
22+
ground_truth_file = open(groundtruth_report_dir, "r")
23+
24+
#set Tracker bounding box coordinate text file
25+
ground_truth_data = {}
26+
tracker_data = {}
27+
gtf_line = ground_truth_file.readline()
28+
29+
counter = 0
30+
# Parse ground truth and tracker bounding box files
31+
while gtf_line:
32+
ground_truth_data[counter] = gtf_line.split()[0:]
33+
counter = counter + 1
34+
gtf_line = ground_truth_file.readline()
35+
36+
# Read video
37+
video = cv2.VideoCapture(video_source)
38+
n_frames = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
39+
40+
while True:
41+
ok, frame = video.read()
42+
if (frameNumber) < counter:
43+
p1_g = (int(ground_truth_data[frameNumber][0]), int(ground_truth_data[frameNumber][1]))
44+
p2_g = (int(ground_truth_data[frameNumber][0]) + int(ground_truth_data[frameNumber][2]), int(ground_truth_data[frameNumber][1]) + int(ground_truth_data[frameNumber][3]))
45+
cv2.putText(frame, "Frame number: " + str('{0:04}'.format(frameNumber)), (100,80),cv2.FONT_HERSHEY_SIMPLEX, 0.75, (50,170,50), 2 )
46+
cv2.rectangle(frame, p1_g, p2_g, (0,255,0), 2, 1)
47+
print('#' + str('{0:04}'.format(frameNumber)))
48+
if not ok:
49+
break
50+
51+
# Start timer
52+
timer = cv2.getTickCount()
53+
54+
# Update tracker
55+
# Calculate Frames per second (FPS)
56+
fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer);
57+
# Display result
58+
cv2.imshow("pyTAG", frame)
59+
# Exit if ESC pressed
60+
k = cv2.waitKey(1) & 0xff
61+
if k == 32 :
62+
restart = True
63+
#ok, frame = video.read()
64+
65+
while video.isOpened():
66+
cv2.putText(frame, "Frame number: " + str('{0:04}'.format(frameNumber)), (100,80),cv2.FONT_HERSHEY_SIMPLEX, 0.75, (50,170,50), 2 )
67+
# Read video capture
68+
#ret, frame = video.read()
69+
70+
# show one frame at a time
71+
key = cv2.waitKey(0)
72+
while key not in [32, ord('n'), ord('b'), ord('a'), ord('e')]:
73+
key = cv2.waitKey(0)
74+
75+
if key == ord('n'):
76+
print(key)
77+
if frameNumber < n_frames-1:
78+
frameID = frameNumber
79+
frameNumber = frameNumber + 1
80+
p1_g = (int(ground_truth_data[frameNumber][0]), int(ground_truth_data[frameNumber][1]))
81+
p2_g = (int(ground_truth_data[frameNumber][0]) + int(ground_truth_data[frameNumber][2]), int(ground_truth_data[frameNumber][1]) + int(ground_truth_data[frameNumber][3]))
82+
video.set(1,frameNumber)
83+
ret, frame = video.read()
84+
cv2.putText(frame, "Frame number: " + str('{0:04}'.format(frameNumber)), (100,80),cv2.FONT_HERSHEY_SIMPLEX, 0.75, (50,170,50), 2 )
85+
cv2.rectangle(frame, p1_g, p2_g, (0,255,0), 2, 1)
86+
else:
87+
break
88+
if key == ord('b'):
89+
print(key)
90+
if n_frames >= frameNumber and frameNumber != 0:
91+
frameID = frameNumber
92+
frameNumber = frameNumber - 1
93+
p1_g = (int(ground_truth_data[frameNumber][0]), int(ground_truth_data[frameNumber][1]))
94+
p2_g = (int(ground_truth_data[frameNumber][0]) + int(ground_truth_data[frameNumber][2]), int(ground_truth_data[frameNumber][1]) + int(ground_truth_data[frameNumber][3]))
95+
video.set(1,frameNumber)
96+
ret, frame = video.read()
97+
cv2.putText(frame, "Frame number: " + str('{0:04}'.format(frameNumber)), (100,80),cv2.FONT_HERSHEY_SIMPLEX, 0.75, (50,170,50), 2 )
98+
cv2.rectangle(frame, p1_g, p2_g, (0,255,0), 2, 1)
99+
if key == ord('e'):
100+
break
101+
if key == 32:
102+
editCount = editCount + 1
103+
bbox = cv2.selectROI(frame, False)
104+
coordinate = '{0} {1} {2} {3}'.format(int(bbox[0]),int(bbox[1]),int(bbox[2]),int(bbox[3]))
105+
if(str(coordinate) != "0 0 0 0"):
106+
ground_truth_data[frameNumber] = (str(coordinate)+"\n").split()[0:]
107+
else:
108+
coordinate = "0 0 0 0"
109+
ground_truth_data[frameNumber] = (str(coordinate)+"\n").split()[0:]
110+
print(str(ground_truth_data[frameNumber]))
111+
cv2.destroyWindow("ROI selector")
112+
p1_g = (int(ground_truth_data[frameNumber][0]), int(ground_truth_data[frameNumber][1]))
113+
p2_g = (int(ground_truth_data[frameNumber][0]) + int(ground_truth_data[frameNumber][2]), int(ground_truth_data[frameNumber][1]) + int(ground_truth_data[frameNumber][3]))
114+
video.set(1,frameNumber)
115+
cv2.putText(frame, "Frame number: " + str('{0:04}'.format(frameNumber)), (100,80),cv2.FONT_HERSHEY_SIMPLEX, 0.75, (50,170,50), 2 )
116+
cv2.rectangle(frame, p1_g, p2_g, (0,255,0), 2, 1)
117+
# Display each frame
118+
cv2.imshow("pyTAG", frame)
119+
frameNumber = frameNumber + 1
120+
print("Total corrections: "+str(editCount))
121+
report_reviewedGT(ground_truth_data)

pyTAG.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def reinit_tracker(restart,frameNumber,video):
8585
# Tracking failure
8686
cv2.putText(frame, "The tracker has failed, please reinitialise", (100,80), cv2.FONT_HERSHEY_SIMPLEX, 0.75,(0,0,255),2)
8787
restart = True
88-
cv2.destroyWindow("ITAGGen")
88+
cv2.destroyWindow("pyTAG")
8989
print ("The tracker failed on frame number: " + str('{0:04}'.format(frameNumber)))
9090
ok, frame = video.read()
9191
reinit_tracker(restart,frameNumber,video)
@@ -98,7 +98,7 @@ def reinit_tracker(restart,frameNumber,video):
9898
cv2.putText(frame, "Frame number: " + str('{0:04}'.format(frameNumber)), (100,80),cv2.FONT_HERSHEY_SIMPLEX, 0.75, (50,170,50), 2 )
9999

100100
# Display result
101-
cv2.imshow("ITAGGen", frame)
101+
cv2.imshow("pyTAG", frame)
102102

103103
# Exit if ESC pressed
104104
k = cv2.waitKey(1) & 0xff
@@ -184,7 +184,7 @@ def reinit_tracker(restart,frameNumber,video):
184184
#traker_bounding_box_dictionary[frameID] = "0 0 0 0"
185185
break
186186
# Display each frame
187-
cv2.imshow("ITAGGen", frame)
187+
cv2.imshow("pyTAG", frame)
188188

189189
#cv2.destroyWindow("ROI selector")
190190
reinit_tracker(restart,frameNumber,video)

reviewGT.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
import sys
33

44
#do not forget to change the three variables below
5-
video_source = '/myVideoSource/highview2_frame%05d.jpg'
6-
groundtruth_report_dir = '/myGTReport/Desktop/gt_reportx.txt'
7-
reviewed_GT_report_dir = '/myReviewedGTReports/reviewed_gt_report.txt'
5+
video_source = "/video/%04d.png"
6+
groundtruth_report_dir = "/foo1/bar1.txt"
7+
reviewed_GT_report_dir = "/foo1/bar2.txt"
88

99
ground_truth_data = {}
1010
tmp_ground_truth_data = {}
@@ -55,7 +55,7 @@ def report_reviewedGT():
5555

5656
cv2.putText(frame, "Frame number: " + str('{0:04}'.format(frameNumber)), (100,80),cv2.FONT_HERSHEY_SIMPLEX, 0.75, (50,170,50), 2 )
5757
cv2.imshow("Tracking",frame)
58-
k = cv2.waitKey(500) & 0xff
58+
k = cv2.waitKey(1000) & 0xff
5959
if k == 32:
6060
bbox = cv2.selectROI(frame, False)
6161
coordinate = '{0} {1} {2} {3}'.format(int(bbox[0]),int(bbox[1]),int(bbox[2]),int(bbox[3]))

trackerEvaluator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#do not forget to change the three variables below
55
video_source = "/video/%04d.png"
66
groundtruth_report_dir = "/foo1/bar1.txt"
7-
tracker_report_dir = "/foo2/bar2.txt"
7+
tracker_report_dir = "/foo1/bar2.txt"
88

99
if __name__ == '__main__':
1010
frameNumber = 0
@@ -62,7 +62,7 @@
6262

6363
cv2.putText(frame, "Frame number: " + str('{0:04}'.format(frameNumber)), (100,80),cv2.FONT_HERSHEY_SIMPLEX, 0.75, (50,170,50), 2 )
6464
cv2.imshow("Tracking",frame)
65-
k = cv2.waitKey(50) & 0xff
65+
k = cv2.waitKey(250) & 0xff
6666
if k == 32:
6767
bbox = cv2.selectROI(frame, False)
6868
cv2.destroyWindow("ROI selector")

0 commit comments

Comments
 (0)