opencv实现人脸,人眼,微笑检测

1.首先实现人脸检测

 1 import cv2
 2
 3 img = cv2.imread("people.jpg",1)  #读入图像
 4 #导入人脸级联分类器引擎,“.xml”文件里包含了训练出来的人脸特征
 5 face_engine = cv2.CascadeClassifier(cv2.data.haarcascades+‘haarcascade_frontalface_default.xml‘)
 6 #用人脸级联分类器引擎进行人脸识别,返回的faces为人脸的坐标列表
 7 #scaleFactor--表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%; 
 8 #minNeighbors--表示构成检测目标的相邻矩形的最小个数(默认为3个)。
10 #如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框,
11 #这种设定值一般用在用户自定义对检测结果的组合程序上;
12 faces = face_engine.detectMultiScale(img,scaleFactor=1.1,minNeighbors=3)
13
14 # 对每一张脸,进行如下操作
15 for (x,y,w,h) in faces:
16     #画人脸框,bgr ,width
17     img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
18 #在“output”窗口中展示效果图
19 cv2.imshow("output",img)
20 # 监听键盘上的任何按键,如果有按键即退出并且关闭窗口,并将图片保存为output.jpg
21 cv2.waitKey(0)
22 cv2.destroyAllWindows()
23 cv2.imwrite("output1.jpg",img)

输入:

输出:

2.对单张图片进行人脸和人眼检测

 1 import cv2
 2
 3 img = cv2.imread("img4.jpg",1)  #读入图像
 4
 5 face_engine = cv2.CascadeClassifier(cv2.data.haarcascades+‘haarcascade_frontalface_default.xml‘)
 6 eye_engine = cv2.CascadeClassifier(cv2.data.haarcascades+‘haarcascade_eye.xml‘)
 7
 8 faces = face_engine.detectMultiScale(img,scaleFactor=1.1,minNeighbors=3)
 9
10 # 对每一张脸,进行如下操作
11 for (x,y,w,h) in faces:
12     #画人脸框,bgr ,width
13     img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
14     #在框选出人脸的区域进行人眼的检测,节省计算资源,
15     faces_area = img[y:y+h,x:x+w]
16     #scaleFactor默认1.1,minNeighbors默认3
17     eyes = eye_engine.detectMultiScale(faces_area,1.0132,1)
18     for (ex,ey,ew,eh) in eyes:
19         #画出人眼的框
20         cv2.rectangle(faces_area,(ex,ey),(ex+ew,ey+eh),(0,255,0),1)
21 #在“output”窗口中展示效果图
22 cv2.imshow("output",img)
23 # 监听键盘上的任何按键,如果有按键即退出并且关闭窗口,并将图片保存为output.jpg
24 cv2.waitKey(0)
25 cv2.destroyAllWindows()
26 cv2.imwrite("output_1.jpg",img)

输入一样

输出:

3.加入微笑识别

 1 import cv2
 2
 3 img = cv2.imread("img4.jpg",1)  #读入图像
 4
 5 face_engine = cv2.CascadeClassifier(cv2.data.haarcascades+‘haarcascade_frontalface_default.xml‘)
 6 eye_engine = cv2.CascadeClassifier(cv2.data.haarcascades+‘haarcascade_eye.xml‘)
 7 smile_engine = cv2.CascadeClassifier(cv2.data.haarcascades+‘haarcascade_smile.xml‘)
 8
 9 faces = face_engine.detectMultiScale(img,scaleFactor=1.1,minNeighbors=5)
10
11 # 对每一张脸,进行如下操作
12 for (x,y,w,h) in faces:
13     #画人脸框,bgr ,width
14     img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
15     #在框选出人脸的区域进行人眼的检测,节省计算资源,
16     faces_area = img[y:y+h,x:x+w]
17
18     # 人眼检测
19     #scaleFactor默认1.1,minNeighbors默认3
20     eyes = eye_engine.detectMultiScale(faces_area,1.3,6)
21     for (ex,ey,ew,eh) in eyes:
22         #画出人眼的框
23         cv2.rectangle(faces_area,(ex,ey),(ex+ew,ey+eh),(0,255,0),1)
24
25     # 微笑检测
26     smiles = smile_engine.detectMultiScale(faces_area,1.3,2)
27     for (ex,ey,ew,eh) in smiles:
28         cv2.rectangle(faces_area,(ex,ey),(ex+ew,ey+eh),(0,0,255),1)
29         cv2.putText(img,‘Smile‘,(x,y-3),1,1.5,(0,0,255),2,cv2.LINE_8)
30
31 #在“output”窗口中展示效果图
32 cv2.imshow("output",img)
33 # 监听键盘上的任何按键,如果有按键即退出并且关闭窗口,并将图片保存为output.jpg
34 cv2.waitKey(0)
35 cv2.destroyAllWindows()
36 cv2.imwrite("output4_2.jpg",img)

输出:

原文地址:https://www.cnblogs.com/ivyharding/p/11019745.html

时间: 2024-08-01 02:45:05

opencv实现人脸,人眼,微笑检测的相关文章

SmileyFace——基于OpenCV的人脸人眼检测、面部识别程序

项目地址 https://github.com/guoyaohua/SmileyFace 开发环境 Visual Studio 2010 MFC + OpenCV 功能描述 静态图像人脸检测 视频人脸追踪检测 摄像头人脸检测 人脸切割显示 实时面部识别 样本自动采集 基于面部识别的程序锁 系统框图 人脸检测 人脸识别 系统截图 本程序以用户体验为中心,界面简洁.明了.易于操作.即使第一次使用该应用,也可以流利的操作. 1.主界面 2.人脸检测效果图--标准正脸 3.人脸检测效果图--人脸集 4.

基于openCV实现人脸检测

openCV的人脸识别主要通过Haar分类器实现,当然,这是在已有训练数据的基础上.openCV安装在 opencv/opencv/sources/data/haarcascades_cuda(或haarcascades)中存在预先训练好的物体检测器(xml格式),包括正脸.侧脸.眼睛.微笑.上半身.下半身.全身等. openCV的的Haar分类器是一个监督分类器,首先对图像进行直方图均衡化并归一化到同样大小,然后标记里面是否包含要监测的物体.它首先由Paul Viola和Michael Jon

让opencv输出人脸检测的得分(置信率)

最近项目略多,其中一个需要找出一些和脸比较像但是不是脸的负样本,想用opencv的人脸检测器检测到的错误脸作为这样的负样本. 但是国内(包括国外)居然几乎没有相关的资料如何输出detectMultiScale()的置信率或者说是人脸得分 所以写一篇小小的总结供有相关需求的人参考. 转载需注明:http://www.cnblogs.com/sciencefans/ 看了下人脸识别函数的opencv的源码 \sources\modules\objdetect\src\cascadedetect.cp

基于opencv的人脸检测的web应用

参考资料 https://github.com/bsdnoobz/web-based-face-detect http://opencv-code.com/projects/web-based-interface-for-face-detection-with-opencv/ http://www.cnblogs.com/findingsea/archive/2012/03/31/2427833.html 流程如下图 背景知识 php调用exe的返回 <html> <body> &

C++开发人脸性别识别教程(4)——OpenCv的人脸检测函数

这个项目主要包含三部分:人脸检测.特征提取.性别分类: 这篇博客中我们重点介绍OpenCv的人脸检测函数.这篇博客我们先不提MFC,而是在win32控制台下编写一段人脸检测的程序. 一.开启摄像头 我们先讲解如何通过摄像头来采集图像,这听起来更有实际意义. 1.新建工程并配置OpenCv(注意工程类型选择win32控制台应用程序): 2.包含头文件 OpenCv2.x版本包含头文件非常方便,一句话搞定: #include <opencv2\opencv.hpp> using namespace

基于QT和OpenCV的人脸识别系统

1 系统方案设计 1.1 引言 人脸是一个常见而复杂的视觉模式,人脸所反映的视觉信息在人与人的交流和交往中有着重 要的作用和意义,对人脸进行处理和分析在视频监控.出入口控制.视频会议以及人机交互等领 域都有着广泛的应用前景,因此是模式识别和计算机视觉领域持续的研究热点. 本系统在 FriendlyARM Tiny6410 开发板基础上,利用 OpenCV 计算机视觉库和 QT 图形库,通 过普通的 USB 摄像头实现了自动人脸识别,准确率较高,方便易用. 1.2 系统总体架构 "人脸识别&quo

基于 OpenCV 的人脸识别

基于 OpenCV 的人脸识别 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从谷歌街景的图片拼接,到交互艺术展览的技术实现中,都有 OpenCV 的身影. OpenCV 起始于 1999 年 Intel 的一个内部研究项目.从那时起,它的开发就一直很活跃.进化到现在,它已支持如 OpenCL 和 OpenGL 的多种现代技术,也支持如 iOS

python使用opencv实现人脸识别系统

1.首先安装过python环境,在这里就不过说    检测是否安装成功如下,在cmd中输入Python     2.安装numpy 现在开始安装numpy,打开cmd,输入pip install numpy 我的电脑已经安装过了,忘记截屏了.就在网上找了图片 测试是否成功 3.安装opencv 在官网自行下载,这里下载的是opencv2.4.10安装. ### (1)复制cv2.pyd 将"\opencv\build\python\2.7\x64"或"\opencv\buil

基于CNN的人脸相似度检测

人脸相似度检测主要是检测两张图片中人脸的相似度,从而判断这两张图片的对象是不是一个人. 在上一篇文章中,使用CNN提取人脸特征,然后利用提取的特征进行分类.而在人脸相似度检测的工作中,我们也可以利用卷积神经网络先提取特征,然后对提取的特征进行利用. 我们取fc7提取的4096维特征,然后对两个向量进行pairwise相似度检测,即可得到人脸相似度,然后设定一个阈值,判断是否维同一个人.