()
| 20 | |
| 21 | |
| 22 | def main(): |
| 23 | |
| 24 | logger = multiprocessing.log_to_stderr() |
| 25 | logger.setLevel(level=logging.WARNING) |
| 26 | |
| 27 | parser = argparse.ArgumentParser( |
| 28 | description="Marimapper! Scan LEDs in 3D space using your webcam", |
| 29 | formatter_class=argparse.ArgumentDefaultsHelpFormatter, |
| 30 | usage=argparse.SUPPRESS, |
| 31 | ) |
| 32 | |
| 33 | for backend_parser in add_all_backend_parsers(parser) + [parser]: |
| 34 | add_common_args(backend_parser) |
| 35 | add_camera_args(backend_parser) |
| 36 | add_scanner_args(backend_parser) |
| 37 | |
| 38 | args = parser.parse_args() |
| 39 | |
| 40 | parse_common_args(args, logger) |
| 41 | |
| 42 | if not os.path.isdir(args.dir): |
| 43 | raise Exception(f"path {args.dir} does not exist") |
| 44 | |
| 45 | if args.start > args.end: |
| 46 | raise Exception(f"Start point {args.start} is greater the end point {args.end}") |
| 47 | |
| 48 | backend_factory = backend_factories[args.backend](args) |
| 49 | |
| 50 | scanner = Scanner( |
| 51 | args.dir, |
| 52 | args.device, |
| 53 | args.exposure, |
| 54 | args.threshold, |
| 55 | backend_factory, |
| 56 | args.start, |
| 57 | args.end, |
| 58 | args.interpolation_max_fill if args.interpolation_max_fill != -1 else 10000, |
| 59 | args.interpolation_max_error if args.interpolation_max_error != -1 else 10000, |
| 60 | args.disable_movement_check, |
| 61 | args.camera_model, |
| 62 | ) |
| 63 | |
| 64 | scanner.mainloop() |
| 65 | scanner.close() |
| 66 | |
| 67 | |
| 68 | if __name__ == "__main__": |
no test coverage detected