diff --git a/fixtracks/read_tracks.py b/fixtracks/read_tracks.py
new file mode 100644
index 0000000..7482aab
--- /dev/null
+++ b/fixtracks/read_tracks.py
@@ -0,0 +1,76 @@
+import json
+import cv2 as cv
+import pandas as pd
+import numpy as np
+import matplotlib.pyplot as plt
+
+from IPython import embed
+
+def show_video(filename):
+ cap = cv.VideoCapture('2024.11.13_0_converted_right_undistorted_fixed.mp4')
+ count = 0
+ while cap.isOpened():
+ ret, frame = cap.read()
+ # if frame is read correctly ret is True
+ if not ret:
+ print("Can't receive frame (stream end?). Exiting ...")
+ break
+ count += 1
+ if count < 2000:
+ continue
+ gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
+ print(count)
+ cv.imshow('frame', gray[::2,::2])
+ if cv.waitKey(1) == ord('q'):
+ break
+ cap.release()
+ cv.destroyAllWindows()
+
+def topandas(filename):
+ temp = []
+ tracking_data = {"frame": [], "name": [], "cls": [],
+ "confidence": [], "visible": [] ,
+ "track_id": [],
+ }
+ key_dict = {f"key_{i}": [] for i in range(6)}
+ box_labels = ["x1", "y1", "x2", "y2"]
+ box_dict = {f"box_{i}": [] for i in box_labels}
+ tracking_data.update(key_dict)
+ tracking_data.update(box_dict)
+
+ with open(filename, "r") as f:
+ data = json.load(f)
+ for d in data: # each of the frames
+ if len(d["data"]) == 0:
+ continue
+ for dd in d["data"]: # each of the found objects, i.e. fish
+ key_x = [float(x) for x in list(np.round(dd["keypoints"]["x"], 2))]
+ key_y = [float(y) for y in list(np.round(dd["keypoints"]["y"], 2))]
+ key_dict = {f"key_{i}": [v] for i, v in enumerate(zip(key_x, key_y))}
+ visible = np.round(dd["keypoints"]["visible"], 3)
+ tracking_data["frame"].append(d["frame"])
+ tracking_data["name"].append(dd["name"])
+ tracking_data["cls"].append(dd["class"])
+ tracking_data["visible"].append(visible)
+ tracking_data["confidence"].append(float(np.round(dd["confidence"], 3)))
+ tracking_data["track_id"].append(dd["track_id"] if "track_id" in dd.keys() else -1)
+ for bk, bl in zip(box_dict.keys(), box_labels):
+ tracking_data[bk].append(dd["box"][bl])
+ for i, kd in enumerate(key_dict.keys()):
+ tracking_data[kd].append((key_x[i], key_y[i]))
+
+ df = pd.DataFrame(tracking_data)
+ return df
+
+def main():
+ # import left and right tracks into a pandas dataframe
+ right_tracks = "2024.11.13_0_converted_right_undistorted_fixed_pose.json"
+ left_tracks = "2024.11.13_0_converted_left_undistorted_fixed_pose.json"
+
+ rdf = topandas(right_tracks)
+ rdf.to_csv("right_tracks.csv", sep=";")
+ ldf = topandas(left_tracks)
+ ldf.to_csv("left_tracks.csv", sep=";")
+
+if __name__ == "__main__":
+ main()
diff --git a/icons/Unbenannt.afdesign b/icons/Unbenannt.afdesign
new file mode 100644
index 0000000..808d490
Binary files /dev/null and b/icons/Unbenannt.afdesign differ
diff --git a/icons/convert.png b/icons/convert.png
new file mode 100644
index 0000000..7e00cf5
Binary files /dev/null and b/icons/convert.png differ
diff --git a/icons/merge.png b/icons/merge.png
new file mode 100644
index 0000000..e916b21
Binary files /dev/null and b/icons/merge.png differ
diff --git a/icons/open.png b/icons/open.png
new file mode 100644
index 0000000..890e23c
Binary files /dev/null and b/icons/open.png differ
diff --git a/icons/tracks.png b/icons/tracks.png
new file mode 100644
index 0000000..53f3e6e
Binary files /dev/null and b/icons/tracks.png differ
diff --git a/resources.qrc b/resources.qrc
index 24b741b..54eb90d 100644
--- a/resources.qrc
+++ b/resources.qrc
@@ -4,7 +4,10 @@
icons/help.png
icons/quit.png
icons/nix_close.png
- icons/nix_open.png
+ icons/open.png
+ icons/merge.png
+ icons/convert.png
+ icons/tracks.png
icons/settings.png
\ No newline at end of file