opencv实现人脸,人眼,微笑检测
1.首先实现人脸检测
import cv2 img = cv2.imread("people.jpg",1) #读入图像
#导入人脸级联分类器引擎,“.xml”文件里包含了训练出来的人脸特征
face_engine = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')
#用人脸级联分类器引擎进行人脸识别,返回的faces为人脸的坐标列表
#scaleFactor--表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%;
#minNeighbors--表示构成检测目标的相邻矩形的最小个数(默认为3个)。
#如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框,
#这种设定值一般用在用户自定义对检测结果的组合程序上;
faces = face_engine.detectMultiScale(img,scaleFactor=1.1,minNeighbors=3) # 对每一张脸,进行如下操作
for (x,y,w,h) in faces:
#画人脸框,bgr ,width
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
#在“output”窗口中展示效果图
cv2.imshow("output",img)
# 监听键盘上的任何按键,如果有按键即退出并且关闭窗口,并将图片保存为output.jpg
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite("output1.jpg",img)
输入:
输出:
2.对单张图片进行人脸和人眼检测
import cv2 img = cv2.imread("img4.jpg",1) #读入图像 face_engine = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')
eye_engine = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_eye.xml') faces = face_engine.detectMultiScale(img,scaleFactor=1.1,minNeighbors=3) # 对每一张脸,进行如下操作
for (x,y,w,h) in faces:
#画人脸框,bgr ,width
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
#在框选出人脸的区域进行人眼的检测,节省计算资源,
faces_area = img[y:y+h,x:x+w]
#scaleFactor默认1.1,minNeighbors默认3
eyes = eye_engine.detectMultiScale(faces_area,1.0132,1)
for (ex,ey,ew,eh) in eyes:
#画出人眼的框
cv2.rectangle(faces_area,(ex,ey),(ex+ew,ey+eh),(0,255,0),1)
#在“output”窗口中展示效果图
cv2.imshow("output",img)
# 监听键盘上的任何按键,如果有按键即退出并且关闭窗口,并将图片保存为output.jpg
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite("output_1.jpg",img)
输入一样
输出:
3.加入微笑识别
import cv2 img = cv2.imread("img4.jpg",1) #读入图像 face_engine = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')
eye_engine = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_eye.xml')
smile_engine = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_smile.xml') faces = face_engine.detectMultiScale(img,scaleFactor=1.1,minNeighbors=5) # 对每一张脸,进行如下操作
for (x,y,w,h) in faces:
#画人脸框,bgr ,width
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
#在框选出人脸的区域进行人眼的检测,节省计算资源,
faces_area = img[y:y+h,x:x+w] # 人眼检测
#scaleFactor默认1.1,minNeighbors默认3
eyes = eye_engine.detectMultiScale(faces_area,1.3,6)
for (ex,ey,ew,eh) in eyes:
#画出人眼的框
cv2.rectangle(faces_area,(ex,ey),(ex+ew,ey+eh),(0,255,0),1) # 微笑检测
smiles = smile_engine.detectMultiScale(faces_area,1.3,2)
for (ex,ey,ew,eh) in smiles:
cv2.rectangle(faces_area,(ex,ey),(ex+ew,ey+eh),(0,0,255),1)
cv2.putText(img,'Smile',(x,y-3),1,1.5,(0,0,255),2,cv2.LINE_8) #在“output”窗口中展示效果图
cv2.imshow("output",img)
# 监听键盘上的任何按键,如果有按键即退出并且关闭窗口,并将图片保存为output.jpg
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite("output4_2.jpg",img)
输出:
opencv实现人脸,人眼,微笑检测的更多相关文章
- opencv+opencv_contrib 人脸识别和检测 python开发环境快速搭建(30分钟)图文教程
很多朋友为了学习python.ML(机器学习).DL(深度学习).opencv等花费了大量时间配置安装环境(一个朋友花了4天时间才配置好)各种搜索.下载.安装配置,出问题等. 市面上的配置资料很多,选 ...
- SmileyFace——基于OpenCV的人脸人眼检测、面部识别程序
项目地址 https://github.com/guoyaohua/SmileyFace 开发环境 Visual Studio 2010 MFC + OpenCV 功能描述 静态图像人脸检测 视频人脸 ...
- 【图像处理】使用OpenCV实现人脸和行人检测
OpenCV全称是Open source Computer Vision Library(开放源代码计算机视觉库),是一个用于图像处理.分析.机器视觉方面的开源函数库,提供了很多图像处理的工具和可 ...
- Python 3 利用 Dlib 19.7 和 sklearn机器学习模型 实现人脸微笑检测
0.引言 利用机器学习的方法训练微笑检测模型,给一张人脸照片,判断是否微笑: 使用的数据集中69张没笑脸,65张有笑脸,训练结果识别精度在95%附近: 效果: 图1 示例效果 工程利用pytho ...
- 【AdaBoost算法】基于OpenCV实现人脸检测Demo
一.关于检测算法 分类器训练: 通过正样本与负样本训练可得到分类器,opencv有编译好的训练Demo,按要求训练即可生成,这里我们直接使用其已经训练好的分类器检测: 检测过程: 检测过程很简单,可以 ...
- Python学习--使用dlib、opencv进行人脸检测标注
参考自https://www.pyimagesearch.com/2017/04/03/facial-landmarks-dlib-opencv-python/ 在原有基础上有一部分的修改(image ...
- OpenCV + Python 人脸检测
必备知识 Haar-like opencv api 读取图片 灰度转换 画图 显示图像 获取人脸识别训练数据 探测人脸 处理人脸探测的结果 实例 图片素材 人脸检测代码 人脸检测结果 总结 下午的时候 ...
- 【转载】opencv实现人脸检测
全文转载自CSDN的博客(不知道怎么将CSDN的博客转到博客园,应该没这功能吧,所以直接复制全文了),转载地址如下 http://blog.csdn.net/lsq2902101015/article ...
- Java+opencv实现人脸检测
版本 Java1.8 opencv3.4 代码: import java.awt.Graphics; import java.awt.image.BufferedImage; import javax ...
随机推荐
- HDU2444 The Accomodation of Students —— 二分图最大匹配
题目链接:https://vjudge.net/problem/HDU-2444 The Accomodation of Students Time Limit: 5000/1000 MS (Java ...
- YTU 2562: 黄金螺旋
2562: 黄金螺旋 时间限制: 1 Sec 内存限制: 128 MB 提交: 832 解决: 427 题目描述 黄金螺旋是根据斐波那契数列画出来的螺旋曲线,自然界中存在许多斐波那契螺旋线的图案, ...
- YTU 2979: MathBook类--多态
2979: MathBook类--多态 时间限制: 1 Sec 内存限制: 128 MB 提交: 51 解决: 31 题目描述 Book类将自己的display函数设计为虚函数,从而通过父类指针调 ...
- Ubuntu TFTP 服务
/******************************************************************** * Ubuntu TFTP 服务 * 说明: * 在Ubun ...
- linux上部署javaWeb项目
将web项目打成war包,上传到Linux操作系统tomcat安装目录下的webapps下即可!
- bzoj 3894 文理分科【最小割+dinic】
谁说这道和2127是双倍经验的来着完全不一样啊? 数组开小会TLE!数组开小会TLE!数组开小会TLE! 首先sum统计所有收益 对于当前点\( (i,j) \)考虑,设\( x=(i-1)*m+j ...
- bzoj 4540: [Hnoi2016]序列【单调栈+线段树】
强烈安利:http://blog.csdn.net/qq_34637390/article/details/51313126 这篇讲标记讲的非常好,这个标记非常神奇-- 首先last表示扫描到last ...
- 一条SQL语句是如何执行的?--Mysql45讲笔记记录 打卡day1
写在前面的话:回想以前上班的时候,空闲时间还是挺多的,但是都荒废了.如今找工作着实费劲了.但是这段时间在极客时间买了mysql45讲,就好像发现了新大陆一样,这是我认真做笔记的第一天,说实话第一讲我已 ...
- 原生javascript之实战 轮播图
成品效果如下图所示: 因为博客园限制图片上传大小被我删了一些帧数,所以图片看起来会有一点卡,现实运行是不会的 搭建HTML和CSS结构 HTML代码如下: <div class="wr ...
- Sign on Fence CodeForces - 484E
http://codeforces.com/problemset/problem/484/E 题意: 给定一个长度为n的数列,有m次询问,询问形如l r k 要你在区间[l,r]内选一个长度为k的区间 ...