图片自选,使用Haar级联检测器检测人脸、人眼、侧脸、嘴、鼻、行人进行检测
时间: 2023-10-11 12:11:00 浏览: 70
好的,以下是使用OpenCV库中的Haar级联检测器进行人脸、人眼、侧脸、嘴、鼻、行人检测的Python代码示例:
```python
import cv2
# 加载Haar级联检测器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
side_face_cascade = cv2.CascadeClassifier('haarcascade_profileface.xml')
mouth_cascade = cv2.CascadeClassifier('haarcascade_mcs_mouth.xml')
nose_cascade = cv2.CascadeClassifier('haarcascade_mcs_nose.xml')
pedestrian_cascade = cv2.CascadeClassifier('haarcascade_fullbody.xml')
# 加载图片
img = cv2.imread('test.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 进行人脸检测
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
for (x, y, w, h) in faces:
# 在人脸周围绘制矩形框
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
# 在人脸区域内进行人眼检测
roi_gray = gray[y:y+h, x:x+w]
eyes = eye_cascade.detectMultiScale(roi_gray)
for (ex, ey, ew, eh) in eyes:
cv2.rectangle(img, (x+ex, y+ey), (x+ex+ew, y+ey+eh), (0, 255, 0), 2)
# 在人脸区域内进行侧脸检测
side_faces = side_face_cascade.detectMultiScale(roi_gray)
for (sx, sy, sw, sh) in side_faces:
cv2.rectangle(img, (x+sx, y+sy), (x+sx+sw, y+sy+sh), (0, 0, 255), 2)
# 在人脸区域内进行嘴唇检测
mouths = mouth_cascade.detectMultiScale(roi_gray)
for (mx, my, mw, mh) in mouths:
cv2.rectangle(img, (x+mx, y+my), (x+mx+mw, y+my+mh), (255, 255, 0), 2)
# 在人脸区域内进行鼻子检测
noses = nose_cascade.detectMultiScale(roi_gray)
for (nx, ny, nw, nh) in noses:
cv2.rectangle(img, (x+nx, y+ny), (x+nx+nw, y+ny+nh), (255, 0, 255), 2)
# 进行行人检测
pedestrians = pedestrian_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
for (x, y, w, h) in pedestrians:
# 在行人周围绘制矩形框
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 255), 2)
# 显示检测结果
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`haarcascade_frontalface_default.xml`、`haarcascade_eye.xml`、`haarcascade_profileface.xml`、`haarcascade_mcs_mouth.xml`、`haarcascade_mcs_nose.xml`和`haarcascade_fullbody.xml`是OpenCV库中已经提供的Haar级联检测器模型文件。你可以根据需要使用不同的模型文件进行检测。