人脸识别:haarcascade_frontalface_default.xml加载FALSE

第一步:在这个网站上下载python-4.9.0-window-exe(我的opencv-python库是更新到4.9.0)

第二步:将exe存入在自己Anaconda\Lib\site-packages\下运行

第三步:

face_cas_path=r'D:\tools\Anaconda\Lib\site-packages\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml'
face_cas = cv.CascadeClassifier(face_cas_path)
face_cas_path.load(cascPath)

结果显示True

当然还有一种方法,直接将需要用的文件复制到运行文件同一个目录下,直接:

face_cas = cv.CascadeClassifier( "haarcascade_frontalface_default.xml" )
face_cas.load('haarcascade_frontalface_default.xml')

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个基于 Python 和 OpenCV 的人脸录入和识别系统。以下是基本的步骤: 1. 安装 OpenCV 库和其他依赖库,例如 numpy 和 argparse。 2. 准备训练数据集。这里我们可以使用已经标记好的数据集,例如 LFW 数据集,或者自己标记一些人脸数据集。 3. 训练人脸识别模型。我们可以使用 OpenCV 自带的人脸识别算法 LBPH(Local Binary Patterns Histograms)或者使用其他深度学习算法,例如基于卷积神经网络(CNN)的人脸识别模型。 4. 实现人脸录入功能。这里我们可以使用 OpenCV 的人脸检测算法来检测人脸,并使用摄像头拍摄人脸图像,然后将图像保存到本地。 5. 实现人脸识别功能。我们可以使用 OpenCV人脸识别算法来识别人脸,并将人脸与已知的人脸数据进行比对,从而确定识别结果。 下面是一些代码参考: ```python import cv2 import numpy as np import argparse # 训练模型 def train_model(training_data): # 加载数据 faces = [] labels = [] for label, folder in enumerate(training_data): for image_path in folder.glob("*.jpg"): image = cv2.imread(str(image_path), cv2.IMREAD_GRAYSCALE) faces.append(image) labels.append(label) # 训练模型 face_recognizer = cv2.face.LBPHFaceRecognizer_create() face_recognizer.train(faces, np.array(labels)) return face_recognizer # 检测人脸 def detect_face(image, face_cascade): gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) if len(faces) == 0: return None, None (x, y, w, h) = faces[0] return gray[y:y+w, x:x+h], faces[0] # 识别人脸 def recognize_face(image, face_recognizer, face_cascade): face, rect = detect_face(image, face_cascade) if face is None: return None label, confidence = face_recognizer.predict(face) return label, confidence # 录入人脸 def add_face(image, face_cascade, output_folder, label): face, rect = detect_face(image, face_cascade) if face is None: return False output_path = output_folder / f"{label}_{len(list(output_folder.glob('*.jpg'))) + 1}.jpg" cv2.imwrite(str(output_path), face) return True # 主函数 def main(): parser = argparse.ArgumentParser(description="Face Recognition System") parser.add_argument("--train", action="store_true", help="Train the face recognition model") parser.add_argument("--input", type=str, help="Input image or video path") parser.add_argument("--output", type=str, help="Output image or video path") parser.add_argument("--add", type=str, help="Add a new face to the dataset") parser.add_argument("--label", type=str, help="Label of the new face") args = parser.parse_args() if args.train: # 训练模型 training_data = [Path("data/face_recognition/person1"), Path("data/face_recognition/person2")] face_recognizer = train_model(training_data) face_recognizer.save("data/face_recognition/model.xml") elif args.add: # 录入新人脸 image = cv2.imread(args.add) face_cascade = cv2.CascadeClassifier("data/haarcascade_frontalface_default.xml") output_folder = Path("data/face_recognition/person3") add_face(image, face_cascade, output_folder, args.label) else: # 识别人脸 face_recognizer = cv2.face.LBPHFaceRecognizer_create() face_recognizer.read("data/face_recognition/model.xml") face_cascade = cv2.CascadeClassifier("data/haarcascade_frontalface_default.xml") if args.input: # 处理图片 image = cv2.imread(args.input) label, confidence = recognize_face(image, face_recognizer, face_cascade) print(f"Recognized label: {label}, confidence: {confidence}") if args.output: cv2.imwrite(args.output, image) else: # 处理视频 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() label, confidence = recognize_face(frame, face_recognizer, face_cascade) print(f"Recognized label: {label}, confidence: {confidence}") if args.output: cv2.imwrite(args.output, frame) cv2.imshow("Face Recognition", frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() if __name__ == "__main__": main() ``` 您可以根据需要调整代码并添加更多功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值