quick_label.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import cv2
  2. import argparse
  3. import os
  4. from py.Dataset import Dataset
  5. from py.FileUtils import list_jpegs_recursive
  6. def main():
  7. parser = argparse.ArgumentParser(description="BOW train script")
  8. parser.add_argument("dataset_dir", type=str, help="Directory of the dataset containing all session folders")
  9. parser.add_argument("session_name", type=str, help="Name of the session to use for Lapse images (e.g. marten_01)")
  10. parser.add_argument("--skip", type=int, help="Skip first n images", default=0)
  11. args = parser.parse_args()
  12. ds = Dataset(args.dataset_dir)
  13. session = ds.create_session(args.session_name)
  14. skip = args.skip
  15. if skip > 0:
  16. print(f"Skipping the first {skip} images...")
  17. normal = []
  18. anomalous = []
  19. motion_folder = session.get_motion_folder()
  20. quit = False
  21. print(list_jpegs_recursive(motion_folder), motion_folder)
  22. for img_file in sorted(list_jpegs_recursive(motion_folder)):
  23. if skip > 0:
  24. skip -= 1
  25. print(skip)
  26. continue
  27. img_nr = int(img_file[-9:-4])
  28. print(f"Labeling img #{img_nr}... ", end="")
  29. image = cv2.imread(os.path.join(motion_folder, img_file))
  30. cv2.imshow("labeler", image)
  31. while True:
  32. key = cv2.waitKey(0)
  33. if key == ord("1"):
  34. print("normal")
  35. normal.append(img_nr)
  36. elif key == ord("2"):
  37. print("anomalous")
  38. anomalous.append(img_nr)
  39. elif key == ord("x"):
  40. quit = True
  41. else:
  42. continue
  43. print(f"normal = {normal}")
  44. print(f"anomalous = {anomalous}")
  45. break
  46. if quit:
  47. break
  48. cv2.destroyAllWindows()
  49. print("Done.")
  50. print(f"normal = {normal}")
  51. print(f"anomalous = {anomalous}")
  52. if __name__ == "__main__":
  53. main()