这是我的代码
**导入CV2 导入线程 从 DeepFace 导入 DeepFace 上限 = cv2.VideoCapture(0,cv2.CAP_DSHOW)
cap.set(cv2.CAP_PROP_FRAME_WIDTH,640) 帽.设置(cv2.CAP_PROP_FRAME_HEIGHT,480)
计数器 = 0
face_match = False
reference_img = cv2.imread("reference.jpg.lnk") img = reference_img.copy()
def check_face(frame): 全局人脸匹配 尝试: if DeepFace.verify(frame,img)['已验证']: 面部匹配=真 别的: 面部匹配=假 除了值错误: 面部匹配=假
虽然正确: ret,frame=cap.read() 如果计数器 %30 == 0: 尝试: threading.Thread(target=check_face,args=(frame.copy(),)).start() 除了值错误: 经过 计数器 += 1
if face_match:
cv2.putText(frame,("AUTHORIZED",(20,450),cv2.FONT_HERSHEY_SIMPLEX,2,(0,255,0),5))
else:
cv2.putText(frame,("UNAUTHORIZED",(20,450),cv2.FONT_HERSHEY_SIMPLEX,2,(0,255),5))
cv2.imshow("Face Authetication Cam",frame)
key = cv2.waitkey(1)
if key == ord("q"):
break
cv2.destroyAllWindows()**
我遇到的错误
文件“c:\Users\HP\Desktop\minor project 2\main.py”,第 14 行,位于
img = reference_img.copy()
请尽快帮助我:(
验证图像加载:即使文件存在,cv2.imread()也可能无法正确加载。确保 OpenCV 可以读取该文件。您可以通过加载后打印reference_img来检查它是否为None。
确保正确的错误处理。这是一个例子:
import cv2
import threading
from deepface import DeepFace
cap = cv2.VideoCapture(0,cv2.CAP_DSHOW)
cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)
counter = 0
face_match = False
# Load reference image
reference_img = cv2.imread("reference.jpg.lnk")
if reference_img is None:
print("Error: Unable to load reference image.")
exit()
def check_face(frame):
global face_match
try:
if DeepFace.verify(frame, reference_img)['verified']:
face_match = True
else:
face_match = False
except ValueError:
face_match = False
while True:
ret, frame = cap.read()
if counter % 30 == 0:
try:
threading.Thread(target=check_face,args=(frame.copy(),)).start()
except ValueError:
pass
counter += 1
if face_match:
cv2.putText(frame, "AUTHORIZED", (20, 450), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 255, 0), 5)
else:
cv2.putText(frame, "UNAUTHORIZED", (20, 450), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255), 5)
cv2.imshow("Face Authentication Cam", frame)
key = cv2.waitKey(1)
if key == ord("q"):
break
cv2.destroyAllWindows()