| from sys import argv | |
| from time import sleep | |
| import cv2 as cv | |
| from app.camera import Camera | |
| from app.server import HTTPDaemon | |
| from app.translator import Translator | |
| def camera_loop(camera: Camera, translator: Translator): | |
| retry_count = 0 | |
| while not camera.is_capturing(): | |
| if retry_count > 3: | |
| raise Exception("No camera frames found.") | |
| retry_count += 1 | |
| sleep(1) | |
| while True: | |
| cv.imshow('Input', camera.buffer[-1]) | |
| translator.video_to_asl(camera.buffer) | |
| if cv.waitKey(1) == 27: | |
| break | |
| cv.destroyAllWindows() | |
| def main(translator: Translator): | |
| with Camera(0, 64) as camera: | |
| camera_loop(camera, translator) | |
| def init_server(): | |
| host = 'localhost' | |
| port = parse_args() | |
| translator = Translator(confidence=0.7) | |
| with HTTPDaemon(host, port, translator): | |
| try: | |
| main(translator) | |
| except KeyboardInterrupt: | |
| print("\nManual exit detected.") | |
| finally: | |
| print("Exiting..") | |
| def parse_args() -> int: | |
| try: | |
| return 5000 if len(argv) < 2 else int(argv[1]) | |
| except ValueError: | |
| print("\nPort must be an integer.\ne.g. python server.py 5000\n") | |
| raise |