当我尝试创建一个超时系统时,如果在10秒钟内未检测到人脸,它将锁定我的计算机,它将无法正常工作。我想发生的是,如果网络摄像头被阻塞或无法检测到人脸,它将触发一个if语句,该语句将使用子进程来锁定我的计算机。对此还很陌生,因此将不胜感激!
import sys, time, face_recognition, cv2, numpy as np, subprocess
faceconfirm = 0
video_capture = cv2.VideoCapture(0)
taylor_image = face_recognition.load_image_file("/Users/Myfullname/Desktop/Faces/taylorface.jpg")
taylor_face_encoding = face_recognition.face_encodings(taylor_image)[0]
known_face_encodings = [
taylor_face_encoding,
]
known_face_names = [
"Taylor",
]
while True:
ret, frame = video_capture.read()
rgb_frame = frame[:, :, ::-1]
face_locations = face_recognition.face_locations(rgb_frame)
face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)
for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):
matches = face_recognition.compare_faces(known_face_encodings, face_encoding)
timeout = 0
correct = 0
Confirm = False
ctdtimeout = -100
continue1 = 1
while continue1 < 10:
if continue1 == 1:
time.sleep(1)
timeout+=1
if timeout == 5:
print("Timeout")
exit()
if matches == face_recognition.compare_faces(taylor_face_encoding, known_face_encodings):
print("Confirmed")
Confirm = True
continue1 = 100
else:
print("Negative")
correct-=1
if correct <= -3:
print("Userdisallowed")
subprocess.call('/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend',shell=True)
exit()
if Confirm == True:
exit()
if Confirm == False:
subprocess.call('/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend',shell=True)
exit()
face_distances = face_recognition.face_distance(known_face_encodings, face_encoding)
best_match_index = np.argmin(face_distances)