实现功能:给定一张图片,寻找图中的人脸,并用矩形框标记,按下Esc键,关闭所有窗口
# !/user/bin/env python
# -☆- coding:utf-8 -☆-
# author:lishan time:2020/6/30
import cv2
# 读取图片
# demo.jpg为图片名,自己修改
image = cv2.imread('demo.jpg')
# 显示图片
cv2.imshow('orignal', image)
# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 加载haar检测器
faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 人脸检测
faces = faceCascade.detectMultiScale(
# 待检测图像
gray,
# 缩放因子
scaleFactor=1.15,
# 同一人脸的最小检测标记个数
minNeighbors=2,
# 目标最小检测尺寸大小
minSize=(5, 5)
)
# 打印人脸位置坐标
# print(faces)
# 打印人脸个数
print('发现{0}个人脸!'.format(len(faces)))
# 标记人脸
for (x, y, w, h) in faces:
# 矩形标注
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 0)
# 显示检测结果
cv2.imshow('detect', image)
while True:
key = cv2.waitKey(1)
# 按下Esc键退出
if int(key) == 27:
break
# 销毁所有窗口
cv2.destroyAllWindows()
检测效果如下:
参考书籍:李立宗著. OpenCV轻松入门 面向Python[M]. 北京:电子工业出版社, 2019.05.
代码来源:在书中第23章第一节中的代码