-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.py
executable file
·93 lines (74 loc) · 2.36 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/usr/bin/env python3
'''
Punto de entrada al programa.
Maneja la toma de argumentos desde la terminal y ejecuta el programa. Ver ayuda
ejecutando este script con la opción --help
'''
import argparse
from dataclasses import dataclass
import parallax
import face_detection
import scene_3d
import scene_2d
from misc import RequestRestartException
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help='comandos', dest='comando')
subparsers.required = True
# Lectura de argumentos
parser.add_argument('-s', '--screen-size', type=int, nargs=2,
metavar=('WIDTH', 'HEIGHT'),
help=('Seleccionar resolución pantalla a usar, ingresar ancho y alto en '
'píxeles')
)
parser.add_argument('-c', '--cam-index', type=int,
help='Seleccionar camara a usar, ingresar número'
)
# Lectura de comando
parser_parallax = subparsers.add_parser(
'parallax',
help='Iniciar el programa completo'
)
parser_face_detection = subparsers.add_parser(
'face_detection',
help='Probar la detección de caras'
)
parser_scene_3d = subparsers.add_parser(
'scene_3d',
help='Probar escena 3d con OpenGL'
)
parser_scene_2d = subparsers.add_parser(
'scene_2d',
help='Probar escena 2d con OpenGL'
)
args = parser.parse_args()
# Al importar config se inicializa el objeto prm que almacena los parámetros o
# opciones
from config import prm
# Configurar argumentos
if args.screen_size:
prm['screen_auto_size'] = False
prm['screen_w'], prm['screen_h'] = args.screen_size
else:
prm['screen_auto_size'] = True
if args.cam_index:
prm['camera_device_index'] = args.cam_index
# Ejecutar subprogramas dando los parámetros, parámetros por defecto y
# argumentos de terminal
while True:
try:
if args.comando == 'parallax':
parallax.main()
elif args.comando == 'face_detection':
face_detection.demo()
elif args.comando == 'scene_3d':
scene_3d.demo()
elif args.comando == 'scene_2d':
scene_2d.demo()
else:
raise RuntimeError('Comando desconocido')
# Si se llega acá significa que el programa terminó sin que se haya
# pedido un reinicio
break
# Excepción lanzada por el programa para requerir un reinicio
except RequestRestartException:
print("Reiniciando (manteniendo las modificaciones de parámetros)")