| import glob | import glob | ||||
| class I3Locker: | class I3Locker: | ||||
| def __init__(self): | |||||
| self.killed = False | |||||
| self.proc = None | |||||
| def run(self): | def run(self): | ||||
| print("starting mlock") | |||||
| self.proc = subprocess.Popen([ "mlock" ]) | self.proc = subprocess.Popen([ "mlock" ]) | ||||
| code = self.proc.wait() | code = self.proc.wait() | ||||
| if code == 0 or self.killed: | if code == 0 or self.killed: | ||||
| self.proc.terminate() | self.proc.terminate() | ||||
| class FaceLocker: | class FaceLocker: | ||||
| def run(self): | |||||
| def __init__(self): | |||||
| self.delay = 200 | self.delay = 200 | ||||
| self.dev = 2 | self.dev = 2 | ||||
| self.running = True | |||||
| self.running = False | |||||
| self.killed = False | |||||
| self.waitingProc = None | self.waitingProc = None | ||||
| def run(self): | |||||
| self.running = True | |||||
| # Import here because it's sloow | # Import here because it's sloow | ||||
| import face_recognition | import face_recognition | ||||
| import cv2 | import cv2 | ||||
| path = f"./faces/{getpass.getuser()}/*.npy" | path = f"./faces/{getpass.getuser()}/*.npy" | ||||
| paths = [] | paths = [] | ||||
| for p in glob.glob(path): | for p in glob.glob(path): | ||||
| print(f"reading {p}") | |||||
| print(f"Reading {p}") | |||||
| faceencs.append(np.load(p)) | faceencs.append(np.load(p)) | ||||
| paths.append(p) | paths.append(p) | ||||
| # Blink IR blasters | # Blink IR blasters | ||||
| import cv2 | import cv2 | ||||
| cap = cv2.VideoCapture(self.dev) | cap = cv2.VideoCapture(self.dev) | ||||
| time.sleep(0.1) | |||||
| cap.release() | cap.release() | ||||
| self.waitingProc.wait() | self.waitingProc.wait() | ||||
| ] | ] | ||||
| def runLocker(locker): | def runLocker(locker): | ||||
| print("Starting "+locker.__class__.__name__) | |||||
| ret = locker.run() | ret = locker.run() | ||||
| if ret == 0: | if ret == 0: | ||||
| print(locker.__class__.__name__+" unlocked.") | print(locker.__class__.__name__+" unlocked.") |