Pyhton的人脸识别代码如下:
#!usr/bin/env python
#coding:utf‐8
import sys
sys.path.append('C:\\Users\\Heyden\\AppData\\Local\\Programs\\Python\\Python37-32\\Lib\\site-packages\\')
import cv2
import os
import numpy as np
from PIL import Image
# recognizer = cv2.createLBPHFaceRecognizer()
detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
recognizer = cv2.face.LBPHFaceRecognizer_create()
def get_images_and_labels(path):
image_paths = [os.path.join(path, f) for f in os.listdir(path)]
face_samples = []
ids = []
for image_path in image_paths:
image = Image.open(image_path).convert('L')
image_np = np.array(image, 'uint8')
if os.path.split(image_path)[-1].split(".")[-1] != 'jpg':
continue
image_id = int(os.path.split(image_path)[-1].split(".")[1])
faces = detector.detectMultiScale(image_np)
for (x, y, w, h) in faces:
face_samples.append(image_np[y:y + h, x:x + w])
ids.append(image_id)
return face_samples, ids
faces, Ids = get_images_and_labels('C:\\Users\\Heyden\\PycharmProjects\\face\\data_set')
recognizer.train(faces, np.array(Ids))
recognizer.save('C:\\Users\\Heyden\\PycharmProjects\\face\\trainner\\trainner.yml')
执行代码报错:
Traceback (most recent call last):
File "C:\Users\Heyden\PycharmProjects\face\trainner2.py", line 13, in
recognizer = cv2.face.LBPHFaceRecognizer_create()
AttributeError: module 'cv2.cv2' has no attribute 'face'
Process finished with exit code 1
(划线的部分即问题所在)
问题分析:主要原因是OpenCV的扩展模块Opencv_contrib没有找到的原因
解决方法:cmd命令行下 —— pip install opencv_contrib_python
验证:代码测试通过,实现人脸识别数据集的训练。