def BtnModuleSettingsCB(self): modules = Modules() modules.show()
def bounding_boxes_images(args, DEFAULT_OID_DIR): if not args.Dataset: dataset_dir = os.path.join(DEFAULT_OID_DIR, 'Dataset') csv_dir = os.path.join(DEFAULT_OID_DIR, 'csv_folder') else: dataset_dir = os.path.join(DEFAULT_OID_DIR, args.Dataset) csv_dir = os.path.join(DEFAULT_OID_DIR, 'csv_folder') name_file_class = 'class-descriptions-boxable.csv' CLASSES_CSV = os.path.join(csv_dir, name_file_class) if args.command == 'downloader': logo(args.command) if args.type_csv is None: print(bc.FAIL + 'Missing type_csv argument.' + bc.ENDC) exit(1) if args.classes is None: print(bc.FAIL + 'Missing classes argument.' + bc.ENDC) exit(1) if args.multiclasses is None: args.multiclasses = 0 folder = ['train', 'validation', 'test'] file_list = [ 'train-annotations-bbox.csv', 'validation-annotations-bbox.csv', 'test-annotations-bbox.csv' ] if args.classes[0].endswith('.txt'): with open(args.classes[0]) as f: args.classes = f.readlines() args.classes = [x.strip() for x in args.classes] else: args.classes = [arg.replace('_', ' ') for arg in args.classes] if args.multiclasses == '0': mkdirs(dataset_dir, csv_dir, args.classes, args.type_csv) for classes in args.classes: print(bc.INFO + 'Downloading {}.'.format(classes) + bc.ENDC) class_name = classes error_csv(name_file_class, csv_dir) df_classes = pd.read_csv(CLASSES_CSV, header=None) class_code = df_classes.loc[df_classes[1] == class_name].values[0][0] if args.type_csv == 'train': name_file = file_list[0] df_val = TTV(csv_dir, name_file) if not args.n_threads: download(args, df_val, folder[0], dataset_dir, class_name, class_code) else: download(args, df_val, folder[0], dataset_dir, class_name, class_code, threads=int(args.n_threads)) elif args.type_csv == 'validation': name_file = file_list[1] df_val = TTV(csv_dir, name_file) if not args.n_threads: download(args, df_val, folder[1], dataset_dir, class_name, class_code) else: download(args, df_val, folder[1], dataset_dir, class_name, class_code, threads=int(args.n_threads)) elif args.type_csv == 'test': name_file = file_list[2] df_val = TTV(csv_dir, name_file) if not args.n_threads: download(args, df_val, folder[2], dataset_dir, class_name, class_code) else: download(args, df_val, folder[2], dataset_dir, class_name, class_code, threads=int(args.n_threads)) elif args.type_csv == 'all': for i in range(3): name_file = file_list[i] df_val = TTV(csv_dir, name_file) if not args.n_threads: download(args, df_val, folder[i], dataset_dir, class_name, class_code) else: download(args, df_val, folder[i], dataset_dir, class_name, class_code, threads=int(args.n_threads)) else: print(bc.ERROR + 'csv file not specified' + bc.ENDC) exit(1) elif args.multiclasses == '1': class_list = args.classes print(bc.INFO + 'Downloading {} together.'.format(class_list) + bc.ENDC) multiclass_name = ['_'.join(class_list)] mkdirs(dataset_dir, csv_dir, multiclass_name, args.type_csv) error_csv(name_file_class, csv_dir) df_classes = pd.read_csv(CLASSES_CSV, header=None) class_dict = {} for class_name in class_list: class_dict[class_name] = df_classes.loc[ df_classes[1] == class_name].values[0][0] for class_name in class_list: if args.type_csv == 'train': name_file = file_list[0] df_val = TTV(csv_dir, name_file) if not args.n_threads: download(args, df_val, folder[0], dataset_dir, class_name, class_dict[class_name], class_list) else: download(args, df_val, folder[0], dataset_dir, class_name, class_dict[class_name], class_list, int(args.n_threads)) elif args.type_csv == 'validation': name_file = file_list[1] df_val = TTV(csv_dir, name_file) if not args.n_threads: download(args, df_val, folder[1], dataset_dir, class_name, class_dict[class_name], class_list) else: download(args, df_val, folder[1], dataset_dir, class_name, class_dict[class_name], class_list, int(args.n_threads)) elif args.type_csv == 'test': name_file = file_list[2] df_val = TTV(csv_dir, name_file) if not args.n_threads: download(args, df_val, folder[2], dataset_dir, class_name, class_dict[class_name], class_list) else: download(args, df_val, folder[2], dataset_dir, class_name, class_dict[class_name], class_list, int(args.n_threads)) elif args.type_csv == 'all': for i in range(3): name_file = file_list[i] df_val = TTV(csv_dir, name_file) if not args.n_threads: download(args, df_val, folder[i], dataset_dir, class_name, class_dict[class_name], class_list) else: download(args, df_val, folder[i], dataset_dir, class_name, class_dict[class_name], class_list, int(args.n_threads)) elif args.command == 'visualizer': logo(args.command) flag = 0 while (True): if flag == 0: print( "Which folder do you want to visualize (train, test, validation)? <exit>" ) image_dir = input("> ") flag = 1 if image_dir == 'exit': exit(1) class_image_dir = os.path.join(dataset_dir, image_dir) print("Which class? <exit>") show_classes(os.listdir(class_image_dir)) class_name = input("> ") if class_name == 'exit': exit(1) download_dir = os.path.join(dataset_dir, image_dir, class_name) label_dir = os.path.join(dataset_dir, image_dir, class_name, 'Label') if not os.path.isdir(download_dir): print("[ERROR] Images folder not found") exit(1) if not os.path.isdir(label_dir): print("[ERROR] Labels folder not found") exit(1) index = 0 print( dedent(""" -------------------------------------------------------- INFO: - Press 'd' to select next image - Press 'a' to select previous image - Press 'e' to select a new class - Press 'w' to select a new folder - Press 'q' to exit You can resize the window if it's not optimal -------------------------------------------------------- """)) show(class_name, download_dir, label_dir, len(os.listdir(download_dir)) - 1, index) while True: progression_bar(len(os.listdir(download_dir)) - 1, index + 1) k = cv2.waitKey(0) & 0xFF if k == ord('d'): cv2.destroyAllWindows() if index < (len(os.listdir(download_dir)) - 2): index += 1 show(class_name, download_dir, label_dir, len(os.listdir(download_dir)) - 1, index) elif k == ord('a'): cv2.destroyAllWindows() if index > 0: index -= 1 show(class_name, download_dir, label_dir, len(os.listdir(download_dir)) - 1, index) elif k == ord('e'): cv2.destroyAllWindows() break elif k == ord('w'): flag = 0 cv2.destroyAllWindows() break elif k == ord('q'): cv2.destroyAllWindows() exit(1) break
print("[ERROR] Labels folder not found") exit(1) index = 0 print(dedent(""" -------------------------------------------------------- INFO: - Press 'd' to select next image - Press 'a' to select previous image - Press 'w' to proceed at the previous menu - You can resize the window if it's not optimal -------------------------------------------------------- """)) show(class_name, download_dir, label_dir, index) while True: progression_bar(len(os.listdir(download_dir))-1, index+1) k = cv2.waitKey(0) & 0xFF if k == ord('d'): cv2.destroyAllWindows() if index < len(os.listdir(download_dir)) - 2: index += 1 show(class_name, download_dir, label_dir, index) elif k == ord('a'): cv2.destroyAllWindows() if index > 0:
import modules X = 10 Y = 50 WIDTH = 1190 HEIGHT = 720 while True: original_screen = modules.capture(x=X, y=Y, width=WIDTH, height=HEIGHT) processed_screen = modules.process(original_screen) if not modules.show(processed_screen): break
index = 0 print( dedent(""" -------------------------------------------------------- INFO: - Press 'd' to select next image - Press 'a' to select previous image - Press 'e' to select a new class - Press 'w' to select a new folder - Press 'q' to exit You can resize the window if it's not optimal -------------------------------------------------------- """)) show(class_name, download_dir, label_dir, len(os.listdir(download_dir)) - 1, index) while True: progression_bar(len(os.listdir(download_dir)) - 1, index + 1) k = cv2.waitKey(0) & 0xFF if k == ord('d'): cv2.destroyAllWindows() if index < len(os.listdir(download_dir)) - 1: index += 1 show(class_name, download_dir, label_dir, len(os.listdir(download_dir)) - 1, index) elif k == ord('a'): cv2.destroyAllWindows()
index = 0 print(dedent(""" -------------------------------------------------------- INFO: - Press 'd' to select next image - Press 'a' to select previous image - Press 'e' to select a new class - Press 'w' to select a new folder - Press 'q' to exit You can resize the window if it's not optimal -------------------------------------------------------- """)) show(class_name, download_dir, label_dir,len(os.listdir(download_dir))-1, index) while True: progression_bar(len(os.listdir(download_dir))-1, index+1) k = cv2.waitKey(0) & 0xFF if k == ord('d'): cv2.destroyAllWindows() if index < len(os.listdir(download_dir)) - 1: index += 1 show(class_name, download_dir, label_dir,len(os.listdir(download_dir))-1, index) elif k == ord('a'): cv2.destroyAllWindows() if index > 0:
def bounding_boxes_images(args, DEFAULT_OID_DIR): if not args.Dataset: dataset_dir = os.path.join(DEFAULT_OID_DIR, 'Dataset') csv_dir = os.path.join(DEFAULT_OID_DIR, 'csv_folder') else: dataset_dir = os.path.join(DEFAULT_OID_DIR, args.Dataset) csv_dir = os.path.join(DEFAULT_OID_DIR, 'csv_folder') name_file_class = 'class-descriptions-boxable.csv' CLASSES_CSV = os.path.join(csv_dir, name_file_class) if args.command == 'downloader': save_args_conf(args, dataset_dir) logo(args.command) if args.type_csv is None: print(bc.FAIL + 'Missing type_csv argument.' + bc.ENDC) exit(1) if args.classes is None: print(bc.FAIL + 'Missing classes argument.' + bc.ENDC) exit(1) if args.multiclasses is None: args.multiclasses = 0 folder = ['train', 'validation', 'test'] file_list = [ 'train-annotations-bbox.csv', 'validation-annotations-bbox.csv', 'test-annotations-bbox.csv' ] if args.classes[0].endswith('.txt'): with open(args.classes[0]) as f: args.classes = f.readlines() args.classes = [x.strip() for x in args.classes] else: args.classes = [arg.replace('_', ' ') for arg in args.classes] if args.multiclasses == '0': mkdirs(dataset_dir, csv_dir, args.classes, args.type_csv) for classes in args.classes: print(bc.INFO + 'Downloading {}.'.format(classes) + bc.ENDC) class_name = classes error_csv(name_file_class, csv_dir, args.yes) df_classes = pd.read_csv(CLASSES_CSV, header=None) try: class_code = df_classes.loc[df_classes[1].str.lower( ) == class_name.lower()].values[0][0] except: print( bc.FAIL + " '" + class_name + "', please check spelling ! or that the class is already exist in the dataset" + bc.ENDC) exit(1) if args.type_csv == 'train': name_file = file_list[0] df_val = TTV(csv_dir, name_file, args.yes) if not args.n_threads: download(args, df_val, folder[0], dataset_dir, class_name, class_code, class_list_for_yolo=args.classes) else: download(args, df_val, folder[0], dataset_dir, class_name, class_code, threads=int(args.n_threads), class_list_for_yolo=args.classes) elif args.type_csv == 'validation': name_file = file_list[1] df_val = TTV(csv_dir, name_file, args.yes) if not args.n_threads: download(args, df_val, folder[1], dataset_dir, class_name, class_code, class_list_for_yolo=args.classes) else: download(args, df_val, folder[1], dataset_dir, class_name, class_code, threads=int(args.n_threads), class_list_for_yolo=args.classes) elif args.type_csv == 'test': name_file = file_list[2] df_val = TTV(csv_dir, name_file, args.yes) if not args.n_threads: download(args, df_val, folder[2], dataset_dir, class_name, class_code, class_list_for_yolo=args.classes) else: download(args, df_val, folder[2], dataset_dir, class_name, class_code, threads=int(args.n_threads), class_list_for_yolo=args.classes) elif args.type_csv == 'all': for i in range(3): name_file = file_list[i] df_val = TTV(csv_dir, name_file, args.yes) if not args.n_threads: download(args, df_val, folder[i], dataset_dir, class_name, class_code, class_list_for_yolo=args.classes) else: download(args, df_val, folder[i], dataset_dir, class_name, class_code, threads=int(args.n_threads), class_list_for_yolo=args.classes) else: print(bc.FAIL + 'csv file not specified' + bc.ENDC) exit(1) elif args.multiclasses == '1': class_list = args.classes print(bc.INFO + 'Downloading {} together.'.format(class_list) + bc.ENDC) multiclass_name = ['_'.join(class_list)] mkdirs(dataset_dir, csv_dir, multiclass_name, args.type_csv) error_csv(name_file_class, csv_dir, args.yes) df_classes = pd.read_csv(CLASSES_CSV, header=None) class_dict = {} for class_name in class_list: try: class_dict[class_name] = df_classes.loc[ df_classes[1].str.lower() == class_name.lower()].values[0][0] except: print( bc.FAIL + " '" + class_name + "', please check spelling ! or that the class is already exist in the dataset" + bc.ENDC) exit(1) for class_name in class_list: if args.type_csv == 'train': name_file = file_list[0] df_val = TTV(csv_dir, name_file, args.yes) if not args.n_threads: download(args, df_val, folder[0], dataset_dir, class_name, class_dict[class_name], class_list, class_list_for_yolo=args.classes) else: download(args, df_val, folder[0], dataset_dir, class_name, class_dict[class_name], class_list, int(args.n_threads), class_list_for_yolo=args.classes) elif args.type_csv == 'validation': name_file = file_list[1] df_val = TTV(csv_dir, name_file, args.yes) if not args.n_threads: download(args, df_val, folder[1], dataset_dir, class_name, class_dict[class_name], class_list, class_list_for_yolo=args.classes) else: download(args, df_val, folder[1], dataset_dir, class_name, class_dict[class_name], class_list, int(args.n_threads), class_list_for_yolo=args.classes) elif args.type_csv == 'test': name_file = file_list[2] df_val = TTV(csv_dir, name_file, args.yes) if not args.n_threads: download(args, df_val, folder[2], dataset_dir, class_name, class_dict[class_name], class_list, class_list_for_yolo=args.classes) else: download(args, df_val, folder[2], dataset_dir, class_name, class_dict[class_name], class_list, int(args.n_threads), class_list_for_yolo=args.classes) elif args.type_csv == 'all': for i in range(3): name_file = file_list[i] df_val = TTV(csv_dir, name_file, args.yes) if not args.n_threads: download(args, df_val, folder[i], dataset_dir, class_name, class_dict[class_name], class_list, class_list_for_yolo=args.classes) else: download(args, df_val, folder[i], dataset_dir, class_name, class_dict[class_name], class_list, int(args.n_threads), class_list_for_yolo=args.classes) elif args.command == 'visualizer': try: print(bc.INFO + ' try to laod dataset configurations at ' + os.path.join(dataset_dir, 'config.json') + bc.ENDC) with open(os.path.join(dataset_dir, 'config.json'), 'r') as f: config_dict = json.load(f) args.classes = config_dict['classes'] args.multiclasses = config_dict['multiclasses'] args.yoloLabelStyle = config_dict['multiclasses'] except Exception as e: print(e) print(bc.FAIL + ' cannot load Dataset configurations at ' + os.path.join(dataset_dir, 'config.json') + bc.ENDC) print( bc.INFO + ' you have to specifiy the dataset config by ur self if you faced any errors later' + bc.ENDC) logo(args.command) flag = 0 while (True): if flag == 0: print( "Which folder do you want to visualize (train, test, validation)? <exit>" ) image_dir = input("> ") flag = 1 if image_dir == 'exit': exit(1) class_image_dir = os.path.join(dataset_dir, image_dir) print("Which class? <exit>") show_classes(os.listdir(class_image_dir)) class_name = input("> ") if class_name == 'exit': exit(1) if args.multiclasses == '0': download_dir = os.path.join(dataset_dir, image_dir, class_name, 'images') label_dir = os.path.join(dataset_dir, image_dir, class_name, 'labels') else: download_dir = os.path.join(dataset_dir, image_dir, class_name) label_dir = os.path.join(dataset_dir, image_dir, class_name) if not os.path.isdir(download_dir): print("[ERROR] Images folder not found") print( "[INFO] If u downloaded your images in multiclasses format, then you have to specify it here also " ) exit(1) if not os.path.isdir(label_dir): print("[ERROR] Labels folder not found") print( "[INFO] If u downloaded your images in multiclasses format, then you have to specify it here also " ) exit(1) index = 0 images_files = glob(os.path.join(download_dir, '*.jpg')) images_files += glob(os.path.join(download_dir, '*.JPG')) images_files += glob(os.path.join(download_dir, '*.jpeg')) images_files += glob(os.path.join(download_dir, '*.JPEG')) images_files += glob(os.path.join(download_dir, '*.png')) images_files += glob(os.path.join(download_dir, '*.PNG')) print( dedent(""" -------------------------------------------------------- INFO: - Press 'd' to select next image - Press 'a' to select previous image - Press 'e' to select a new class - Press 'w' to select a new folder - Press 'q' to exit You can resize the window if it's not optimal -------------------------------------------------------- """)) classes_list = None if args.yoloLabelStyle: classes_list = args.classes index = show(class_name, download_dir, label_dir, images_files, index, args) while True: progression_bar(len(images_files), index + 1) k = cv2.waitKey(0) & 0xFF if k == ord('d'): index += 1 elif k == ord('a'): index -= 1 elif k == ord('e'): cv2.destroyAllWindows() break elif k == ord('w'): flag = 0 cv2.destroyAllWindows() break elif k == ord('q'): cv2.destroyAllWindows() exit(1) break cv2.destroyAllWindows() index = show(class_name, download_dir, label_dir, images_files, index, args)