python 实现 1)读取图像并灰度化,并显示原图像; (3)使用创建的人脸检测多尺度进行人脸检测和人眼检测器进行 人眼检测; (4)依据返回值在图片上用矩形框出人脸,用圆形传出人眼。 (5)将检测出的人脸图像进行截取,并保存
时间: 2024-01-28 12:03:47 浏览: 61
好的,以下是实现上述功能的Python代码:
```python
import cv2
# 加载人脸检测器
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
# 加载人眼检测器
eye_cascade = cv2.CascadeClassifier("haarcascade_eye.xml")
# 读取图像并灰度化
img = cv2.imread("test.jpg")
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]
eyes = eye_cascade.detectMultiScale(roi_gray)
# 遍历检测到的人眼
for (ex, ey, ew, eh) in eyes:
# 在图像上用圆形框出人眼
center = (int(ex + ew/2), int(ey + eh/2))
radius = int((ew + eh)/4)
cv2.circle(roi_color, center, radius, (255, 0, 0), 2)
# 截取人脸图像并保存
roi = img[y:y+h, x:x+w]
cv2.imwrite("face.jpg", roi)
# 显示原图像
cv2.imshow("img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
需要注意的是,代码中使用的人脸检测器和人眼检测器是基于Haar特征的级联分类器(CascadeClassifier),需要提前下载相应的XML文件。可以在OpenCV官网下载,也可以在GitHub上找到。此外,代码中的图像路径和保存路径需要根据实际情况进行修改。
阅读全文