在opencv3中进行图片人脸检测
在opencv中,人脸检测用的是harr或LBP特征,分类算法用的是adaboost算法。这种算法需要提前训练大量的图片,非常耗时,因此opencv已经训练好了,把训练结果存放在一些xml文件里面。在opencv3.0版本中,训练好的文件放在 \build\etc\文件夹下,有两个文件夹haarcascades和lbpcascades,前者存放的是harr特征训练出来的文件,后者存放的是lbp特征训练出来的文件。
人脸检测主要用到的是CascadeClassifier这个类,以及该类下的detectMultiScale函数。
函数原型是:
void CascadeClassifier::detectMultiScale(InputArray image, vector<Rect>& objects, double scaleFactor=1.1, int minNeighbors=, int flags=, Size minSize=Size(), Size maxSize=Size())
总共有7个参数,分别是
第一个参数image: 要检测的图片,一般为灰度图
第二个参数objects: Rect型的容器,存放所有检测出的人脸,每个人脸是一个矩形
第三个参数scaleFactor: 缩放因子,对图片进行缩放,默认为1.1
第四个参数minNeighbors: 最小邻居数,默认为3
第五个参数flags: 兼容老版本的一个参数,在3.0版本中没用处。默认为0
第六个参数minSize: 最小尺寸,检测出的人脸最小尺寸
第七个参数maxSize: 最大尺寸,检测出的人脸最大尺寸
代码:
#include "stdafx.h"
#include "opencv2\opencv.hpp"
#include <iostream>
using namespace std;
using namespace cv; int main()
{
string xmlPath="F:\\opencv3\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_default.xml";
CascadeClassifier ccf; //创建分类器对象
Mat img=imread("d:/friends.jpg");
if(!ccf.load(xmlPath)) //加载训练文件
{
cout<<"不能加载指定的xml文件"<<endl;
return ;
}
vector<Rect> faces; //创建一个容器保存检测出来的脸
Mat gray;
cvtColor(img,gray,CV_BGR2GRAY); //转换成灰度图,因为harr特征从灰度图中提取
equalizeHist(gray,gray); //直方图均衡行
ccf.detectMultiScale(gray,faces,1.1,,,Size(,),Size(,)); //检测人脸
for(vector<Rect>::const_iterator iter=faces.begin();iter!=faces.end();iter++)
{
rectangle(img,*iter,Scalar(,,),,); //画出脸部矩形
}
imshow("faces",img);
waitKey();
return ;
}

总结:
使用起来非常简单,只是精度不怎么样。毕竟这些算法早已经过时,现在是深度学习的天下了。
在opencv3中进行图片人脸检测的更多相关文章
- 图片人脸检测——Dlib版(四)
上几篇给大家讲了OpenCV的图片人脸检测,而本文给大家带来的是比OpenCV更加精准的图片人脸检测Dlib库. 点击查看往期: <图片人脸检测——OpenCV版(二)> <视频人脸 ...
- 图片人脸检测——OpenCV版(二)
图片人脸检测 人脸检测使用到的技术是OpenCV,上一节已经介绍了OpenCV的环境安装,点击查看. 往期目录 视频人脸检测——Dlib版(六)OpenCV添加中文(五)图片人脸检测——Dlib版(四 ...
- 图片人脸检测(OpenCV版)
图片人脸检测 人脸检测使用到的技术是OpenCV,上一节已经介绍了OpenCV的环境安装,点击查看. 功能展示 识别一种图上的所有人的脸,并且标出人脸的位置,画出人眼以及嘴的位置,展示效果图如下: 多 ...
- 基于opencv3.0下的人脸检测和检测部分的高斯模糊处理
如题 这里将任务分解为三大部分: 1.录播放视频 2.人脸检测 3.部分高斯模糊 其中重点放在人脸检测和部分高斯模糊上 1.录播放视频(以opencv中的VideoCapture类进行实现) 首先罗列 ...
- C#使用Emgu CV来进行图片人脸检测
项目需求:某市级组织考试,在考试前需审核考生采集表中的考生照片是否合格,由于要审核的考生信息采集表有很多,原先进行的是手动人工审核,比较费时费力,审核的要求也很简单,并不判断考生是否是图片本人(身份验 ...
- python3 opencv3 实现基本的人脸检测、识别功能
一言不和,先上码子(纯新手,莫嘲笑) # encoding: utf-8 #老杨的猫,环境:PYCHARM,python3.6,opencv3 import cv2,os import cv2.fac ...
- 转《trackingjs人脸检测》
tracking.js是一个开源(BSD协议)的计算机视觉插件,在不同的浏览器中有不同的计算机视觉算法和技术,通过使用现代HTML5规范,能够实现实时颜色跟踪.人脸检测等功能,界面直观.核心文件轻量. ...
- Python使用OpenCV实现简单的人脸检测
文章目录: OpenCV安装 安装numpy 安装opencv OpenCV使用 OpenCV测试 效果图: 注意: 图片人脸检测 程序要求: 技术实现思路 注意 本文使用的环境是:Windows+P ...
- 使用python实现人脸检测
人脸检测 人脸检测使用到的技术是OpenCV,上一节已经介绍了OpenCV的环境安装,点击查看. 功能展示 识别一种图上的所有人的脸,并且标出人脸的位置,画出人眼以及嘴的位置,展示效果图如下: 多张脸 ...
随机推荐
- 保持listview当前位置
保持listview滑动的位置,一般用在增加listview子item中布局的评论或者退出当前活动,再次进入继续阅读时. 利用ListView.getFirstVisiblePosition()来获取 ...
- 干货-iOS、mac开源项目及库,以后我也会持续更新。
昨晚在网上看的干货,直接分享给大家了,觉得有用的,直接fork吧. https://github.com/Brances/TimLiu-iOS
- C语言-04-函数
函数 函数是一组一起执行任务的语句,函数是一个可执行C程序必不可少的条件(至少一个main()函数),函数的定义形式 returnType functionName() { bodyOf of the ...
- 手动方式安装 eclipse 的svn插件 Subversive和 Subversive SVN Connectors
0.下载配置jdk 链接:http://pan.baidu.com/s/1miIVuic 密码:mwo7 配置 JAVA_HOME .JRE_HOME 1 下载eclipse ecli ...
- 用自然语言的角度理解JavaScript中的this关键字
转自:http://blog.leapoahead.com/2015/08/31/understanding-js-this-keyword/ 在编写JavaScript应用的时候,我们经常会使用th ...
- MySQL 如何修改字符集 utf8 改为 utf8mb4
在实行sql server 向 mysql 迁移数据时,报错: Incorrect string value: '\xF0\x9F\x98\x8A' 原因是mysql 采用的是 utf8 的字符集,而 ...
- MemSQL分布式架构介绍(二)
接上次的MemSQL分布式架构介绍(一),原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ 首先上张图,是我 ...
- solrcloud 配置实践
1.环境 3台虚拟机:192.168.26.129.192.168.26.131.192.168.26.132,使用命令sudo iptables -F 关闭防火墙 Solr: solr-6.1.0 ...
- javascript 特效实现(2)——回到顶部效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Linux 下子线程 exit code 在主线程中的使用
Linux线程函数原型是这样的: void* thread_fun(void* arg) 它的返回值是 空类型指针,入口参数也是 空类型指针.那么线程的 exit code 也应该是 void * 类 ...