Spaces:
Runtime error
Runtime error
| import os | |
| import argparse | |
| import imtool | |
| from progress.bar import ChargingBar | |
| import concurrent.futures | |
| PARALLEL = 30 | |
| print("🖼 croping augmented data") | |
| parser = argparse.ArgumentParser(description='crop images to train YOLO on squares') | |
| parser.add_argument('src', metavar='dir', type=str, nargs='+', | |
| help='dir containing the images') | |
| parser.add_argument('--dst', dest='dst', type=str, default='./data/squares', | |
| help='dest dir') | |
| parser.add_argument('--parallel', metavar='parallel', type=int, | |
| default=PARALLEL, | |
| help='number of concurrent jobs') | |
| args = parser.parse_args() | |
| def process(e): | |
| if e.name.endswith('.png') and e.is_file(): | |
| # print(e.name) | |
| label = e.path.replace('images', 'labels').replace('.png', '.txt') | |
| try: | |
| id, boxes = imtool.read_centroids(label) | |
| imtool.crop(id, e.path, boxes, args.dst) | |
| except Exception as err: | |
| print(err) | |
| for d in args.src: | |
| with os.scandir(d) as it: | |
| with concurrent.futures.ThreadPoolExecutor(max_workers = args.parallel) as executor: | |
| futures = {executor.submit(process, e): e for e in it} | |
| count = len(futures.keys()) | |
| bar = ChargingBar('crop', max=count) | |
| print('waiting for futures') | |
| for f in concurrent.futures.as_completed(futures): | |
| e = futures[f] | |
| try: | |
| f.result() | |
| except Exception as err: | |
| print(f'{a}({e}) generated an exception: {err}') | |
| bar.next() | |
| bar.finish() | |