博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV教程(41) 人脸特征检测
阅读量:6160 次
发布时间:2019-06-21

本文共 2038 字,大约阅读时间需要 6 分钟。

      在OpenCV中,自带着Harr分类器人脸特征训练的文件,利用这些文件,我们可以很方面的进行人脸,眼睛,鼻子,表情等的检测。

     人脸特征文件目录: ../opencv2.46/opencv/data/haarcascades

人脸检测Harr分类器的介绍:

分类器的训练步骤:

本文中,我们通过代码了解一下在OpenCV中如何通过harr分类器进行人脸特征检测。

#include 
#include
#include
#include
#include
using namespace std; int main() {
cv::CascadeClassifier mFaceDetector; cv::CascadeClassifier mEyeDetector; cv::CascadeClassifier mMouthDetector; cv::CascadeClassifier mNoseDetector; //载入四个人脸特征分类器文件,可以从opencv的安装目录中找到 if( mFaceDetector.empty() ) mFaceDetector.load( "haarcascade_frontalface_default.xml" ); if( mEyeDetector.empty() ) mEyeDetector.load( "haarcascade_mcs_eyepair_big.xml" ); if( mNoseDetector.empty() ) mNoseDetector.load("haarcascade_mcs_nose.xml" ); if( mMouthDetector.empty() ) mMouthDetector.load( "haarcascade_mcs_mouth.xml" ); //打开视频文件 //cv::VideoCapture capture("bike.avi"); //0 open default camera cv::VideoCapture capture(0); //检查视频是否打开 if(!capture.isOpened()) return 1; // 得到帧率 double rate= capture.get(CV_CAP_PROP_FPS); bool stop(false); cv::Mat frame; // 现在的视频帧 cv::Mat mElabImage;//备份frame图像 cv::namedWindow("Extracted Frame"); // 两帧之间的间隔时间 int delay= 1000/rate; // 循环播放所有的帧 while (!stop) {
// 读下一帧 if (!capture.read(frame)) break; frame.copyTo( mElabImage ); //检测脸 //缩放因子 float scaleFactor = 3.0f; vector< cv::Rect > faceVec; mFaceDetector.detectMultiScale( frame, faceVec, scaleFactor ); int i, j; for( i=0; i
eyeVec; mEyeDetector.detectMultiScale( face, eyeVec ); for( j=0; j
noseVec; mNoseDetector.detectMultiScale( face, noseVec, 3 ); for( j=0; j
mouthVec; cv::Rect halfRect = faceVec[i]; halfRect.height /= 2; halfRect.y += halfRect.height; cv::Mat halfFace = frame( halfRect ); mMouthDetector.detectMultiScale( halfFace, mouthVec, 3 ); for( j=0; j
=0) // stop= true; cv::waitKey(20); } // 关闭视频文件 capture.release(); return 0; }

程序运行效果:

 

代码文件:工程FirstOpenCV36

转载地址:http://tpefa.baihongyu.com/

你可能感兴趣的文章
teamviewer 卸载干净
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>
修改GRUB2背景图片
查看>>
Ajax异步
查看>>
好记性不如烂笔杆-android学习笔记<十六> switcher和gallery
查看>>
JAVA GC
查看>>
3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
查看>>
图解SSH原理及两种登录方法
查看>>
查询个人站点的文章、分类和标签查询
查看>>
基础知识:数字、字符串、列表 的类型及内置方法
查看>>
JSP的隐式对象
查看>>
JS图片跟着鼠标跑效果
查看>>
Leetcode 3. Longest Substring Without Repeating Characters
查看>>
416. Partition Equal Subset Sum
查看>>