这篇文章主要介绍“python实现人脸检测的实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python实现人脸检测的实例分析”文章能帮助大家解决问题。

OpenCV

OpenCV 是计算机视觉领域最受欢迎的开源库,起初它由 C/C ++ 编写,现在用 Python 也能使用。

OpenCV 可以使用机器学习算法搜索图像中的人脸。由于人脸比较复杂,所以并没有一种简单的测试可以告诉我们它是否发现了人脸。但是,算法能够匹配到数千个很小的模式和特征。算法会将识别人脸的任务分解为几千个非常非常小的任务,像这种很小的任务,解决起来就比较容易了。这样的微小任务就被称为分类器。

代码结果:

方法如下:

寻找导入的xml文件

importcv2print(cv2.__file__)

找到cv2安装的路径,在该路径下找到/data文件。

里面默认下载了一部分xml文件,不是全部的xml文件。如果需要的xml文件不在里面,需要自行在网上下载,然后放到该目录下,以备调用。比如自行安装('haarcascade_mcs_nose.xml','haarcascade_mcs_mouth.xml')

导入包:

importcv2

导入xml文件,可以根据任务需要,自行选择需要导入的xml文件

#人脸检测器face_cascade=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')#眼睛检测器eye_cascade=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_eye.xml')#嘴巴检测器mouth_cascade=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_mcs_mouth.xml')#鼻子检测器nose_cascade=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_mcs_nose.xml')

设置窗口:

cv2.namedWindow('mytest',0);cv2.resizeWindow('mytest',1500,1000)

打开摄像头,人脸识别:

#获取摄像头cap=cv2.VideoCapture(0,cv2.CAP_DSHOW)#打开摄像头cap.open(0)whilecap.isOpened():#获取画面flag,frame=cap.read()#人脸检测faces=face_cascade.detectMultiScale(frame,1.3,2)img=framefor(x,y,w,h)infaces:#根据人脸坐标和长度,宽度画出矩形img=cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)#确定人脸范围,在人脸上搜索其他特征face_area=img[y:y+h,x:x+w]#人眼检测eyes=eye_cascade.detectMultiScale(face_area,1.3,2)for(ex,ey,ew,eh)ineyes:cv2.rectangle(face_area,(ex,ey),(ex+ew,ey+eh),(255,0,0),1)#嘴巴检测mouth=mouth_cascade.detectMultiScale(face_area,1.5,2)for(mx,my,mw,mh)inmouth:cv2.rectangle(face_area,(mx,my),(mx+mw,my+mh),(0,0,255),2)#鼻子检测nose=nose_cascade.detectMultiScale(face_area,1.2,5)for(nx,ny,nw,nh)innose:cv2.rectangle(face_area,(nx,ny),(nx+nw,ny+nh),(255,0,255),2)#画面显示cv2.imshow('mytest',img)#设置退出按钮key_pressed=cv2.waitKey(100)print('单机窗口,输入按键,电脑按键为',key_pressed,'按esc键结束')ifkey_pressed==27:break#关闭摄像头cap.release()#关闭图像窗口cv2.destroyAllWindows()完整代码:

importcv2#人脸检测器face_cascade=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')#眼睛检测器eye_cascade=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_eye.xml')#嘴巴检测器mouth_cascade=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_mcs_mouth.xml')#鼻子检测器nose_cascade=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_mcs_nose.xml')#获取摄像头cap=cv2.VideoCapture(0,cv2.CAP_DSHOW)#打开摄像头cap.open(0)cv2.namedWindow('mytest',0);cv2.resizeWindow('mytest',1500,1000)whilecap.isOpened():#获取画面flag,frame=cap.read()#人脸检测faces=face_cascade.detectMultiScale(frame,1.3,2)img=framefor(x,y,w,h)infaces:#根据人脸坐标和长度,宽度画出矩形img=cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)#确定人脸范围,在人脸上搜索其他特征face_area=img[y:y+h,x:x+w]#人眼检测eyes=eye_cascade.detectMultiScale(face_area,1.3,2)for(ex,ey,ew,eh)ineyes:cv2.rectangle(face_area,(ex,ey),(ex+ew,ey+eh),(255,0,0),1)#嘴巴检测mouth=mouth_cascade.detectMultiScale(face_area,1.5,2)for(mx,my,mw,mh)inmouth:cv2.rectangle(face_area,(mx,my),(mx+mw,my+mh),(0,0,255),2)#鼻子检测nose=nose_cascade.detectMultiScale(face_area,1.2,5)for(nx,ny,nw,nh)innose:cv2.rectangle(face_area,(nx,ny),(nx+nw,ny+nh),(255,0,255),2)#画面显示cv2.imshow('mytest',img)#设置退出按钮key_pressed=cv2.waitKey(100)print('单机窗口,输入按键,电脑按键为',key_pressed,'按esc键结束')ifkey_pressed==27:break#关闭摄像头cap.release()#关闭图像窗口cv2.destroyAllWindows()

关于“python实现人脸检测的实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。