想要检测一张图片中是否含有人脸,需要用到的关键技术就是人脸检测。
人脸检测算法的输入是一张图像,输出是人脸框的坐标序列,具体结果是 0 个人脸框或 1 个人脸框或多个人脸框。
人脸检测算法的原理简单来说是一个“扫描”加“判定”的过程。即首先在整个图像范围内扫描,再逐个判定候选区域是否为人脸的过程。因此人脸检测算法的计算速度会跟图像尺寸大小以及图像内容相关。在实际编写代码时,我们可以通过设置“输入图像尺寸”、或“最小脸尺寸限制”、“人脸数量上限”等参数来加快算法的运行速度。
我们使用 opencv 这个库来进行人脸的检测,这个库在我们的 RPA 中已经内置,直接导入即可。
相关代码及注释如下:
import cv2
image = cv2.imread(‘1.png‘) # 加载图片
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 转换成灰度图,提高计算速度
face_cascade = cv2.CascadeClassifier(r"C:\iS-RPA\plugin\Com.Isearch.Func.Python\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml") # 加载Haar特征分类器
faces = face_cascade.detectMultiScale(
gray, # 要检测的图像
scaleFactor = 1.15, # 图像尺寸每次缩小的比例
minNeighbors = 3, # 一个目标至少要被检测到3次才会被标记为人脸
minSize = (5, 5) # 目标的最小尺寸
) # 探测图片中的人脸
for (x,y,w,h) in faces:
cv2.rectangle(image, (x,y), (x+w,y+h), (0,255,0), 2) # 为每个人脸绘制矩形框
cv2.imshow("image", image)
cv2.waitKey(0)
len(faces) 即为检测到图片中人脸的数量
原文地址:https://blog.51cto.com/14253212/2390541