深度学习算法进行人脸检测python代码
时间: 2023-08-19 09:04:03 浏览: 59
使用深度学习算法进行人脸检测的Python代码可以使用OpenCV和Dlib库实现。以下是使用OpenCV进行人脸检测的示例代码:
```python
import cv2
# 加载分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 加载图像
img = cv2.imread('test.jpg')
# 转为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# 绘制矩形框
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
# 显示图像
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
以上代码中,`haarcascade_frontalface_default.xml`是OpenCV提供的人脸分类器,可以在官方文档中下载。`detectMultiScale`方法可以进行多尺度检测,可以调整检测精度和速度。在检测到人脸后,可以使用`rectangle`方法在图像上绘制矩形框。最后使用`imshow`方法显示图像。
另外,Dlib库也提供了人脸检测的功能,使用方法类似。
相关问题
三种算法实现深度学习python人脸检测代码
以下是三种深度学习算法实现人脸检测的Python代码示例:
1. 基于SSD算法的人脸检测代码:
```python
import cv2
# 加载模型
net = cv2.dnn.readNetFromCaffe('deploy.prototxt', 'res10_300x300_ssd_iter_140000.caffemodel')
# 加载图像
img = cv2.imread('test.jpg')
# 进行预处理
blob = cv2.dnn.blobFromImage(cv2.resize(img, (300, 300)), 1.0, (300, 300), (104.0, 177.0, 123.0))
# 进行预测
net.setInput(blob)
detections = net.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([img.shape[1], img.shape[0], img.shape[1], img.shape[0]])
(startX, startY, endX, endY) = box.astype("int")
cv2.rectangle(img, (startX, startY), (endX, endY), (0, 0, 255), 2)
# 显示图像
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
2. 基于YOLO算法的人脸检测代码:
```python
import cv2
# 加载模型
net = cv2.dnn.readNet('yolov3-tiny.weights', 'yolov3-tiny.cfg')
# 加载标签
with open('coco.names', 'r') as f:
labels = [line.strip() for line in f.readlines()]
# 加载图像
img = cv2.imread('test.jpg')
# 进行预处理
blob = cv2.dnn.blobFromImage(img, 1/255.0, (416, 416), swapRB=True, crop=False)
# 进行预测
net.setInput(blob)
outputs = net.forward()
# 绘制矩形框
for output in outputs:
for detection in output:
scores = detection[5:]
classId = np.argmax(scores)
confidence = scores[classId]
if confidence > 0.5 and classId == 0:
box = detection[0:4] * np.array([img.shape[1], img.shape[0], img.shape[1], img.shape[0]])
(centerX, centerY, width, height) = box.astype("int")
startX = int(centerX - (width / 2))
startY = int(centerY - (height / 2))
endX = int(centerX + (width / 2))
endY = int(centerY + (height / 2))
cv2.rectangle(img, (startX, startY), (endX, endY), (0, 0, 255), 2)
# 显示图像
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
3. 基于MTCNN算法的人脸检测代码:
```python
import cv2
from mtcnn import MTCNN
# 加载模型
detector = MTCNN()
# 加载图像
img = cv2.imread('test.jpg')
# 进行预测
results = detector.detect_faces(img)
# 绘制矩形框
for result in results:
x, y, w, h = result['box']
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2)
# 显示图像
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
以上代码中,分别使用了基于SSD、YOLO和MTCNN算法进行人脸检测。其中,SSD和YOLO都是基于深度学习的目标检测算法,MTCNN则是专门为人脸检测设计的算法。在使用前需要加载对应的模型和标签,并且进行图像预处理和后处理。在预测完成后,可以通过绘制矩形框来标记检测到的人脸。
基于深度学习的人脸检测人脸检测代码
人脸检测是计算机视觉中的一个重要任务,它可以在图像或视频中自动检测出人脸的位置和大小。在深度学习领域,目前最常用的人脸检测算法是基于卷积神经网络(Convolutional Neural Network,CNN)的方法。以下是一个基于CNN的人脸检测代码示例,使用Python语言和OpenCV库实现:
```python
import cv2
# 加载人脸检测模型
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 加载图像
img = cv2.imread('test.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# 在检测到的人脸周围绘制矩形框
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
# 显示结果
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,首先加载了一个预训练好的人脸检测模型(haarcascade_frontalface_default.xml),然后加载待检测的图像。接着将图像转换为灰度图像,调用detectMultiScale方法检测人脸,该方法将返回一个矩形列表,每个矩形表示一个检测到的人脸。最后,遍历每个矩形,将其绘制成矩形框,用cv2.imshow显示结果。