基于神经网络的图片人脸识别实现代码
时间: 2023-11-02 21:05:01 浏览: 96
以下是一个简单的基于神经网络的人脸识别实现代码:
```
import cv2
import numpy as np
import os
# 加载训练好的人脸识别模型
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
# 加载训练好的神经网络模型
model = cv2.dnn.readNetFromCaffe('deploy.prototxt', 'res10_300x300_ssd_iter_140000_fp16.caffemodel')
# 读取测试图片
img = cv2.imread('test.jpg')
# 预处理图片
(h, w) = img.shape[:2]
blob = cv2.dnn.blobFromImage(cv2.resize(img, (300, 300)), 1.0, (300, 300), (104.0, 177.0, 123.0))
# 输入预处理后的图片到神经网络模型进行人脸检测
model.setInput(blob)
detections = model.forward()
# 遍历检测到的人脸
for i in range(0, detections.shape[2]):
confidence = detections[0, 0, i, 2]
if confidence > 0.5:
# 获取人脸区域
box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
(startX, startY, endX, endY) = box.astype('int')
# 进一步检测人脸
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
# 遍历检测到的人脸
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
roi_gray = gray[y:y + h, x:x + w]
roi_color = img[y:y + h, x:x + w]
# 显示识别结果
cv2.imshow('Face Recognition', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在以上代码中,我们首先加载了训练好的人脸识别模型和神经网络模型,然后读取测试图片,并对其进行预处理。接着,我们将预处理后的图片输入到神经网络模型中进行人脸检测,得到检测结果后遍历每个人脸,再利用人脸识别模型进行进一步的人脸检测。最后,在原图中标出检测到的人脸并显示识别结果。
阅读全文