CNN卷积神经网络人脸识别 Opencv+python代码
时间: 2023-10-11 21:13:07 浏览: 107
好的,以下是一个基于OpenCV和Python实现的CNN卷积神经网络人脸识别代码示例:
```python
# 导入必要的库
import cv2
import numpy as np
from keras.models import load_model
# 加载已训练好的模型
model = load_model('model.h5')
# 加载人脸级联分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 定义标签名称
labels_dict = {0: 'person1', 1: 'person2'}
# 捕获视频流
cap = cv2.VideoCapture(0)
while True:
# 读取视频流的帧
ret, frame = cap.read()
# 将图像转换为灰度图像
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
# 处理每个检测到的人脸
for (x, y, w, h) in faces:
# 提取人脸ROI
roi_gray = gray[y:y + h, x:x + w]
roi_gray = cv2.resize(roi_gray, (48, 48), interpolation=cv2.INTER_AREA)
# 预处理图像数据
roi = np.array(roi_gray)
roi = roi.reshape(-1, 48, 48, 1)
roi = roi.astype('float32')
roi /= 255
# 进行预测
predictions = model.predict(roi)
label = np.argmax(predictions)
# 在视频流中绘制人脸区域和标签
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.putText(frame, labels_dict[label], (x, y - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2, cv2.LINE_AA)
# 显示视频流的帧
cv2.imshow('Face Recognition', frame)
# 按下q键退出程序
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放视频流和窗口
cap.release()
cv2.destroyAllWindows()
```
这是一个基于OpenCV和Keras框架实现的人脸识别例子,其中使用了一个训练好的CNN卷积神经网络模型,以及OpenCV的人脸级联分类器来检测人脸。你可以将此代码作为一个起点,并进行修改以满足你的具体需求。