教你如何利用Python实现人脸识别技术,让你秒变技术大佬 人脸识别技术现在已经成为了热门话题,其应用场景也非常广泛。例如在人脸解锁、人脸支付、监控系统等领域都有非常广泛的应用。利用Python可以很容易地实现人脸识别技术,本文将介绍如何使用Python实现人脸识别系统。 一、 准备工作 在开始之前,我们需要先安装OpenCV库。OpenCV是一款计算机视觉库,它提供了许多图像处理和计算机视觉相关的函数。安装OpenCV可以通过pip命令安装: ``` pip install opencv-python ``` 二、采集训练数据 首先需要采集一些人脸图片用于训练模型。通过OpenCV,可以很容易地采集人脸图像。以下是代码示例: ```python import cv2 # 创建一个视频捕捉对象 cap = cv2.VideoCapture(0) face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') count = 0 while True: ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 检测人脸 faces = face_cascade.detectMultiScale(gray, 1.3, 5) for (x, y, w, h) in faces: # 绘制人脸矩形 cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2) # 保存人脸图片 cv2.imwrite("dataset/user." + str(count) + ".jpg", gray[y:y+h,x:x+w]) count += 1 cv2.imshow('frame', frame) # 按下'q'键退出 if cv2.waitKey(100) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() ``` 该代码打开电脑自带的摄像头,并检测摄像头捕获到的人脸矩形,并且将人脸保存在本地。 三、训练模型 在采集完数据后,需要使用已有的图片训练出一个人脸识别模型。以下是代码示例: ```python import cv2 import os import numpy as np # 读取训练数据 def read_images(path): images = [] labels = [] filenames = os.listdir(path) for filename in filenames: if filename.startswith('.'): continue img_path = os.path.join(path, filename) img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE) images.append(np.asarray(img, dtype=np.uint8)) label = int(filename.split('.')[0].replace("user", "")) labels.append(label) return images, labels # 训练模型 def train(): recognizer = cv2.face.LBPHFaceRecognizer_create() face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 读取训练数据 images, labels = read_images('dataset') # 训练 recognizer.train(images, np.array(labels)) # 保存模型 recognizer.save('model.yml') train() ``` 该代码读取采集到的数据,使用OpenCV的LBPH人脸识别算法训练数据。最后将训练好的模型保存在本地。 四、人脸识别 在模型训练完毕后,我们可以使用OpenCV检测人脸并将其进行识别。以下是代码示例: ```python import cv2 recognizer = cv2.face.LBPHFaceRecognizer_create() recognizer.read("model.yml") face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') cap = cv2.VideoCapture(0) font = cv2.FONT_HERSHEY_SIMPLEX while True: ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 检测人脸 faces = face_cascade.detectMultiScale(gray, 1.3, 5) for (x, y, w, h) in faces: # 绘制人脸矩形 cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2) # 识别人脸 id_, confidence = recognizer.predict(gray[y:y+h,x:x+w]) if confidence > 100: # 不匹配的人脸 id_ = "unknown" else: # 匹配的人脸 id_ = "user %s" % id_ cv2.putText(frame, str(id_), (x+5,y-5), font, 1, (255,255,255), 2) cv2.imshow('frame', frame) # 按下'q'键退出 if cv2.waitKey(100) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() ``` 该代码打开摄像头,并且不断检测摄像头捕获到的人脸。如果检测到人脸,则使用模型识别人脸,并在图像上显示出识别出的人脸信息。 总之,Python实现人脸识别技术非常简单易学,通过本文的介绍相信您已经掌握了基本的实现技巧,赶快将其应用于您的项目中吧!