这里使用的OpenCV人脸检测的XML文件可以从https://github.com/opencv/opencv/tree/master/data/haarcascades进行下载。
需要将图片转为灰度图片。
import cv2
#要检测图片的路径
filename = r"F:\Python\picture\003.jpg"
def detect(file_name):
#加载需要的XML文件,用来检测人脸
face_cascade=cv2.CascadeClassifier(r"F:\Python\opencvStudy\cascades\haarcascade_frontalface_default.xml")
img = cv2.imread(file_name)
#转换为灰度图片
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# 检测器开始检测,第一个参数为上面的灰度图。第二个参数是图像金字塔每次放大缩小的比例,第三个参数为在同一位置出现几次才判定为人脸的位置,返回值为检测到的矩形框列表
faces = face_cascade.detectMultiScale(gray,1.2,3)
for (x,y,w,h)in faces:
#画出蓝色框
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow("test",img)
cv2.waitKey()
cv2.destroyAllWindows()
detect(filename)
效果如下: