首先安装openCV-Python库

pycharm

在这里插入图片描述
在这里插入图片描述

Haar级联检测器

找到OpenCV根目录下的data/haarcascades文件夹下包含了所有OpenCV的人脸检测的XML文件,这些文件可以用于检测静止图像、视频以及摄像头所得到的图像中的人脸。

在这里插入图片描述

我们先选择识别一张静态图像

识别的图像要保存至Haar级联检测器相同路径!

import cv2

#定义图片
filename = 'D:/pycharm/my pycharm/venv/Lib/site-packages/cv2/data/c1.jpg'

#加载人脸检测相关的pre-trained分类器,级联检测器
face_cascade = cv2.CascadeClassifier('D:/pycharm/my pycharm/venv/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml')

#读取图像
img = cv2.imread(filename)

#转为灰度图片
gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)

#人脸检测,第二个参数是移动距离,第三个参数是识别度,越大识别度越高
faces = face_cascade.detectMultiScale(gray,1.05,10)

#画方框
for (x,y,w,h) in faces:
    cv2.rectangle(img,(x,y),(x+w,y+w),(0,255,0),2)

cv2.namedWindow('face',cv2.WINDOW_KEEPRATIO)#图像框可以拉动
cv2.imshow('face',img)
cv2.imwrite('face.jpg',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
如果发现人脸没有被识别出来,可以根据情况调节detectMultiScale函数的第二个参数scaleFactor,它表示人脸检测过程中每次迭代时图像的压缩率。

再试试通过摄像头获取图像

import cv2

#开启电脑0号摄像头,捕捉图像
cap = cv2.VideoCapture(0)
#从摄像头获取图像,第一个为布尔变量表示成功与否,第二个变量是图像
ret,filename = cap.read()
#保存图像至Haar相同路径
cv2.imwrite('D:/pycharm/my pycharm/venv/Lib/site-packages/cv2/data/c1.jpg',filename)

#释放摄像头资源
cap.release()

#定义图片
filename = 'D:/pycharm/my pycharm/venv/Lib/site-packages/cv2/data/c1.jpg'

#加载人脸检测相关的pre-trained分类器,级联检测器
face_cascade = cv2.CascadeClassifier('D:/pycharm/my pycharm/venv/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml')

#读取图像
img = cv2.imread(filename)

#转为灰度图片
gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)

#人脸检测,第二个参数是移动距离,第三个参数是识别度,越大识别度越高
faces = face_cascade.detectMultiScale(gray,1.05,10)

#画方框
for (x,y,w,h) in faces:
    cv2.rectangle(img,(x,y),(x+w,y+w),(0,255,0),2)

cv2.namedWindow('face',cv2.WINDOW_KEEPRATIO)#图像框可以拉动
cv2.imshow('face',img)
cv2.imwrite('face.jpg',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐