主要通过knn算法生成训练集,然后通过调用电脑摄像头进行人脸识别,废话不多说, 直接上代码!
import math
import os
import pickle
import re
import face_recognition
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont
from face_recognition.face_detection_cli import image_files_in_folder
from sklearn import neighbors
def train(train_dir, model_save_path=None, n_neighbors=None, knn_algo='ball_tree', verbose=False):
"""
train_dir ; 给定的训练目录,格式是给定的目录下有多个目录,这多个目录以人的名字命名,每个目录下有一张或者多张想要训练的人的面部图片,一张图片有且只有一张脸,不然不会识别
model_save_path : 训练模型保存的路径
n_neighbors ; 分类中要加权的邻居数,不选择的话,就默认
knn_algo : 要支持的基础数据结构knn.默认值是树
verbose : 训练的详细程度
"""
X = []
y = []
# 对训练集中的每个人进行循环
for class_dir in os.listdir(train_dir):
if not os.path.isdir(os.path.join(train_dir, class_dir)):
continue
# 循环浏览当前人员的每个训练图像
for img_path in image_files_in_folder(os.p