文章目录

  • 1.先前Opencv人脸检测
  • 2.python下的级联分类器
  • 3.首先了解Opencv中Haar 特征的Cascade级联分类器
  • 4.Adaboost算法
  • 5.使用图片简单测试一下
  • 6.使用Opencv中自带的级联分类器进行人脸实时检测
  • 7.使用Opencv中自带的级联分类器进行人脸微笑检测
  • 8.使用Opencv中自带的级联分类器进行人脸微笑实时检测

1.先前Opencv人脸检测

https://mydreamambitious.blog.csdn.net/article/details/123535760


2.python下的级联分类器

https://mydreamambitious.blog.csdn.net/article/details/121458773


3.首先了解Opencv中Haar 特征的Cascade级联分类器

使用基于 Haar 特征的级联分类器进行对象检测是 Paul Viola 和 Michael Jones 在其 2001 年的论文“Rapid Object Detection using a Boosted Cascade of Simple Features”中提出的一种有效的对象检测方法。它是一种基于机器学习的方法,其中级联函数是从大量正负图像中训练出来的。然后它用于检测其他图像中的对象。

最初,该算法需要大量的正图像(人脸图像)和负图像(没有人脸的图像)来训练分类器。然后我们需要从中提取特征。为此,使用了下图中显示的 Haar 特征。它们就像我们的卷积核。每个特征都是通过从黑色矩形下的像素总和中减去白色矩形下的像素总和而获得的单个值


4.Adaboost算法

Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。Adaboost算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次得到的分类器最后融合起来,作为最后的决策分类器。


5.使用图片简单测试一下

#Opencv人脸检测
import os
import cv2#导入人脸检测级联分类器,.xml包含训练出来的人脸特征
detect_face=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')#导入图片
#filename:需要打开图片的路径,可以是绝对路径或者相对路径,路径中不能出现中文。
#flag:图像的通道和色彩信息(默认值为1)。
frame=cv2.imread('images/face1.jpg',flags=1)# 使用detect_face进行人脸检测,返回包含的内容是人脸位置的坐标,scaleFactor人脸框的放大比例,minNeighbors表示检测的最小次数
detect = detect_face.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=15)#遍历图中的人脸画框
for (x0,y0,w,h) in detect:#对人脸进行画框frame=cv2.rectangle(frame,pt1=(x0,y0),pt2=(x0+w,y0+h),color=(255,0,0),thickness=2)#图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细cv2.putText(frame,text='person',org=(x0+w//4,y0-10),fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=1.2,color=(0,255,0),thickness=2)
cv2.imshow('face',frame)
cv2.destroyAllWindows()if __name__ == '__main__':print('Pycharm')


6.使用Opencv中自带的级联分类器进行人脸实时检测

#Opencv人脸检测
import os
import cv2#导入人脸检测级联分类器
detect_face=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')#打开摄像头
cap=cv2.VideoCapture(0)while cap.isOpened():OK,frame=cap.read()# 使用detect_face进行人脸检测,返回包含的内容是人脸位置的坐标,scaleFactor人脸框的放大比例,minNeighbors表示检测的最小次数detect = detect_face.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=15)#遍历图中的人脸画框for (x0,y0,w,h) in detect:#对人脸进行画框frame=cv2.rectangle(frame,pt1=(x0,y0),pt2=(x0+w,y0+h),color=(255,0,0),thickness=2)#图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细cv2.putText(frame,text='person',org=(x0+w//4,y0-10),fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=1.2,color=(0,255,0),thickness=2)if cv2.waitKey(1)&0xFF==27:breakcv2.imshow('face',frame)
cap.release()
cv2.destroyAllWindows()if __name__ == '__main__':print('Pycharm')

7.使用Opencv中自带的级联分类器进行人脸微笑检测

#Opencv人脸检测
import os
import cv2#导入人脸检测级联分类器
detect_face=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')#导入人脸检测级联分类器
detect_smile=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_smile.xml')#导入图片
#filename:需要打开图片的路径,可以是绝对路径或者相对路径,路径中不能出现中文。
#flag:图像的通道和色彩信息(默认值为1)。
frame=cv2.imread('images/smile.jpg',flags=1)
#使用detect_face进行人脸检测,返回包含的内容是人脸位置的坐标,scaleFactor人脸框的放大比例,minNeighbors表示检测的最小次数
detect = detect_face.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=15)#遍历图中的人脸画框
for (x0,y0,w,h) in detect:#对人脸进行画框frame=cv2.rectangle(frame,pt1=(x0,y0),pt2=(x0+w,y0+h),color=(255,0,0),thickness=2)#首先将人的检测出来之后检测人的微笑情况frame_smile=frame[x0:x0+w,y0:y0+h]# 对人的进行检测smile=detect_smile.detectMultiScale(frame_smile,scaleFactor=1.2,minNeighbors=15)for (sx, sy, sw, sh) in smile:# 图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细cv2.putText(frame, text='smile', org=(x0 + w // 4, y0 - 10), fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=1.2,color=(0, 255, 0), thickness=2)cv2.imshow('face',frame)
cv2.waitKey(0)
cv2.destroyAllWindows()if __name__ == '__main__':print('Pycharm')

8.使用Opencv中自带的级联分类器进行人脸微笑实时检测

#Opencv人脸检测
import os
import cv2#导入人脸检测级联分类器
detect_face=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')#导入人脸检测级联分类器
detect_smile=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_smile.xml')#打开摄像头
cap=cv2.VideoCapture(0)while cap.isOpened():OK,frame=cap.read()# 使用detect_face进行人脸检测,返回包含的内容是人脸位置的坐标,scaleFactor人脸框的放大比例,minNeighbors表示检测的最小次数detect = detect_face.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=15)#遍历图中的人脸画框for (x0,y0,w,h) in detect:#对人脸进行画框frame=cv2.rectangle(frame,pt1=(x0,y0),pt2=(x0+w,y0+h),color=(255,0,0),thickness=2)#图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细cv2.putText(frame,text='person',org=(x0+w//4,y0-40),fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=1.2,color=(0,255,0),thickness=2)#首先将人的检测出来之后检测人的微笑情况frame_smile=frame[x0:x0+w,y0:y0+h]# 对人的进行检测smile=detect_smile.detectMultiScale(frame_smile,scaleFactor=1.2,minNeighbors=15)for (sx, sy, sw, sh) in smile:# 图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细cv2.putText(frame, text='smile', org=(x0 + w // 4, y0 - 10), fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=1.2,color=(0, 255, 0), thickness=2)if cv2.waitKey(1)&0xFF==27:breakcv2.imshow('face',frame)
cap.release()
cv2.destroyAllWindows()if __name__ == '__main__':print('Pycharm')

Opencv进行人脸检测(第三版改进)相关推荐

  1. 利用opencv实现人脸检测(C++版)

    小编所有的帖子都是基于unbuntu系统的,当然稍作修改同样试用于windows的,经过小编的绞尽脑汁,把刚刚发的那篇python 实现人脸和眼睛的检测的程序用C++ 实现了,当然,也参考了不少大神的 ...

  2. 利用OpenCV实现人脸检测

    如何在一副图片中检测到人脸,这涉及到计算机图形学中一些非常复杂的计算,如果这些计算都靠程序员自己来编程,那么工作量就相当大.OpenCV全称是Open Computer Vision,是指开放的计算机 ...

  3. flutter 人脸检测_【转载】opencv实现人脸检测

    全文转载自CSDN的博客(不知道怎么将CSDN的博客转到博客园,应该没这功能吧,所以直接复制全文了),转载地址如下 http://blog.csdn.net/lsq2902101015/article ...

  4. opencv实现人脸检测、性别和年龄预测

    opencv实现人脸检测.性别和年龄预测 文章目录: 一.下载预训练的模型 1.下载模型 2.模型说明 二.实现步骤 1.加载模型 2.人脸检测 3.性别与年龄预测 4.完整代码 主要是通过openc ...

  5. 【OpenCV实战】OpenCV实现人脸检测详解(含代码)

    OpenCV中有许多可以进行人脸.人眼检测的特征文件,今天我们利用OpenCV中自带的特征文件haarcascade_frontalface_default.xml来进行人脸检测. [OpenCV实战 ...

  6. opencv(人脸检测和识别)

    Opencv的人脸检测函数,定义了具体可跟踪对象类型的数据文件. Haar级联分类器,通过对比分析相邻图像区域来判断给定图像或子图像与已知对象是否匹配. 两个图像的相似程度可以通过它们对应特征的欧式距 ...

  7. 基于opencv实现人脸检测

    基于opencv实现人脸检测 opencv简述 opencv是一个开源的计算机视觉库,它有着C++,Python,Java等接口,支持Windows,Linux,Mac OS,IOS 和 Androi ...

  8. 使用OpenCV进行人脸检测和戴墨镜特效实战(附Python源码)

     需要源码和图片请点赞关注收藏后评论区留言私信~~~ 人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术,也是计算机视觉重点发展的技术.机器学习算法诞生之后,计算机可以通过摄像头等输入设备自 ...

  9. OpenCV 正面人脸检测

    继续整理之前做的OpenCV人脸检测,这次先贴出利用OpenCV自带的人脸haar特征分类器进行人脸检测的例子: OpenCV中人脸检测用的是harr或LBP特征,分类算法用的是adaboost算法, ...

  10. Python图像处理,cv2模块,OpenCV实现人脸检测蔡徐坤

    前言 利用Python实现OpenCV实现人脸检测,废话不多说~ 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: cv2模块: 以及一些Python自带的模块. 环境搭建 ...

最新文章

  1. 科大讯飞AI开发者大赛报名开启,百万奖金等你来!
  2. 运行nltk示例 Resource u'tokenizers punkt english.pickle' not found解决
  3. java:BufferedReader接受输入进来的2个数字,并将它们相加
  4. html+js浏览器检测
  5. yii2 请求外部api_微服务架构之「 API网关 」
  6. vb.net 文本框为空提示,一键清空文本框所有内容
  7. mysql 按顺序添加_MySQL按顺序排序
  8. EnumWindows 使用
  9. idea 构建spring_以Spring方式构建企业Java应用程序
  10. Web框架——Flask系列之abort函数与自定义异常处理(十三)
  11. 手机屏坏了怎么把里面存东西取出来_手机又卡了,到底是运行不够还是存储容量不足?1分钟搞懂...
  12. java字符串包含连续数字,Java中包含数字的排序字符串
  13. 计算机专业简历中技能特长怎么写,简历上特长技能应该怎么填写
  14. (篇十)用结构体数组处理学生成绩、结构体类型函数求平均值
  15. foreach进不去报错java_为什么阿里巴巴Java开发手册中强制要求不要在foreach循环里进行元素的remove和add操作...
  16. Python已经超过了JAVA?
  17. 怎样帮宝宝起个好名字?起名必备的五大招在这里了
  18. 字节跳动双11电商直播技术大揭秘
  19. 如何快速搭建个人博客网站(详解)
  20. Java用“埃氏筛法”求素数

热门文章

  1. python计算机程序设计基础篇答案_计算机程序设计(Python)-中国大学mooc-试题题目及答案...
  2. 微信小程序开发工具导入开发项目教程-阿白必备
  3. vb实现 心理学实验 IAT内隐联想测试
  4. 计算机中人民币的符号怎么打,人民币符号怎么打?Word中人民币符号怎么打?...
  5. 脾胃系病证--便秘,痢疾,泄泻,腹痛,呃逆。。。。。。。。
  6. 树叶贴画机器人_儿童创意手工的意义,从小多动手,长大很受用!
  7. 【测评】腾讯极光T1投影仪详细使用测评
  8. MacOS教程_如何在Mac上设置自定义锁屏消息?
  9. matebook14 2020锐龙——ubuntu20.04 3.5mm耳机有噪音
  10. 一个 5 年老员工:要求加薪 500 元遭拒,老板转头月薪 1 万招新人!