图像处理项目——人脸检测—视频

人脸检测

*开发环境为visual studio2010*使用的是opencv中的Haart特征分类器,harr Cascades*检测对象为视频中的人脸


一:主要步骤
1.加载分类器,将人脸检测分类器和笑脸检测分类器放在项目目录中去
2.调用detecMutiScale()函数检测,对函数中相关的参数进行修改调整,
 是检测的结果更加精确
3.打开摄像头或者视频文件,把检测到的人脸用矩形画出来

opencv中用来做目标检测的级联分类器的一个
类,其结构如下:
The constructor for the cv::CascadeClassifier object is:

      cv::CascadeClassifier::CascadeClassifier(
      const String& filename
  );
这个构造函数只需要一个参数,即存储xml文件的名字,此外还有一个默认参数,即是使用
load()成员加载级联。二:代码
/***************************************************************
主要步骤:
1.将人脸检测分类器放在项目目录中去,加载Haart特征分类器(描述人体各个部位的Haar特征值,包括人脸、眼睛、嘴唇等)
2.调用detecMutiScale()函数检测,对函数中相关的参数进行修改调整
3.打开摄像头或者视频文件把检测到的人脸用矩形画出来
****************************************************************/
#include "opencv2/objdetect.hpp"
#include "opencv2/videoio.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
using namespace cv;

String Path_faceCascade;          //定义xml文件路径,训练模型以xml文件格式保存
CascadeClassifier faceCascade;   //定义人脸分类器,opencv中的harr Cascades

int main()
{
    Path_faceCascade = "models/haarcascade_frontalface_default.xml";   //导入xml文件,给Path_faceCascade
    if( !faceCascade.load( Path_faceCascade ) ) {
      printf("--(!)Error loading face cascade\n");
      return -1;
  }

    VideoCapture cap;
    Mat img, imgGray;
    std::vector<Rect> faces;
    cap.open(0);   //打开摄像头
    //cap.open("../data/test.avi");   //打开视频
    int c = 0;
    if(!cap.isOpened()){
      return 1;
    }  

    while(c!=27)
    {
        cap>>img;
        cvtColor(img, imgGray, CV_RGB2GRAY);       

       faceCascade.detectMultiScale(imgGray, faces, 1.2, 6, 0, Size(0, 0));   //检测人脸
       //画框
       if(faces.size()>0){
          for(int i =0; i < faces.size(); i++ ) {
              rectangle(img, Point(faces[i].x, faces[i].y), Point(faces[i].x + faces[i].width, faces[i].y + faces[i].height),Scalar(0, 255, 0), 1, 8);    //框出人脸位置
          }
       }  

       imshow("Camera", img);
       int k = waitKey(500);
    //按"q"退出
    if(k == 113){
      destroyAllWindows();
      break;
    }
  }
}  

三:检测结果

四:稍微修改代码调通对视频文件中人脸的检测

/***************************************************************
主要步骤:
1.将人脸检测分类器放在项目目录中去,加载Haart特征分类器(描述人体各个部位的Haar特征值,包括人脸、眼睛、嘴唇等)
2.调用detecMutiScale()函数检测,对函数中相关的参数进行修改调整
3.打开摄像头或者视频文件把检测到的人脸用矩形画出来
****************************************************************/
#include "opencv2/objdetect.hpp"
#include "opencv2/videoio.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
using namespace cv;

String Path_faceCascade;          //定义xml文件路径,训练模型以xml文件格式保存
CascadeClassifier faceCascade;   //定义人脸分类器,opencv中的harr Cascades

int main()
{
    Path_faceCascade = "models/haarcascade_frontalface_default.xml";   //导入xml文件,给Path_faceCascade
    if( !faceCascade.load( Path_faceCascade ) ) {
      printf("--(!)Error loading face cascade\n");
      return -1;
  }

    VideoCapture cap;   

    std::vector<Rect> faces;
    //cap.open(0);   //打开摄像头
    cap.open("E://demo.avi");   //打开视频
    if(!cap.isOpened()){
      return 1;
    }  

    Mat img, imgGray;
    while(1)
    {  

        cap>>img;
        cvtColor(img, imgGray, CV_RGB2GRAY);       

       faceCascade.detectMultiScale(imgGray, faces, 1.2, 6, 0, Size(0, 0));   //检测人脸
       //画框
       if(faces.size()>0){
          for(int i =0; i < faces.size(); i++ ) {
              rectangle(img, Point(faces[i].x, faces[i].y), Point(faces[i].x + faces[i].width, faces[i].y + faces[i].height),Scalar(0, 255, 0), 1, 8);    //框出人脸位置
          }
       }  

       imshow("Camera", img);
      waitKey(30);
    }
  cap.release();//释放资源
}  

检测结果

 

原文地址:https://www.cnblogs.com/fpzs/p/10526219.html

时间: 2024-11-02 16:18:52

图像处理项目——人脸检测—视频的相关文章

视频人脸检测

又到研究生毕业季,大家都在忙着论文的撰写.闲来无事,和同门一起看了下网上某外国友人共享的一个实时人脸检测的MATLAB程序,本非我专业,只不过看到那个效果确实蛮有意思的,所以特意卸载了用了好久的2012a版本,重新装了一个9G多的2014a 版本的MATLAB. 话说MATLAB是越来越大,记得大一那会老师上课时说这个软件有1G大,很占空间,当时听了好生诧异.没想到几年不到,随着存储和电脑性能的提升,这个软件也是成倍的增长.不过话说回来,功能却是越来越强大了. 首先下载一个WEBcamera的插

人脸检测和haar分类器视频讲解

刚开始学习人脸检测时,非常郁闷什么是haar分类器,一直是迷迷糊糊的,搞不清楚什么是弱分类器,什么是强分类器,什么是级联分类器,还有检测窗口是如何在待检测图片上运行的,这个小视频会生动形象的展示给你的,想必你会有个直观理解的,快快点击吧  https://vimeo.com/34631229. 点击打开链接 这个小视频是我查找资料中无意中找到的,真实很不容易的,我想如果一开始就看这个小视频的话,再看论文也好,研究opencv源代码也好,会入门更快.对于人脸检测的其他入门方面的小文章,可以参考我的

从视频中提取图片,对图片做人脸检测并截取人脸区域

环境配置:VS2013+opencv2.4.10+libface.lib 参考博客:http://blog.csdn.net/augusdi/article/details/11042329 http://www.1024do.com/?p=1296 首先给出视频处理的函数video_process.hpp #include <stdio.h> #include <opencv2/opencv.hpp> #include "facedetect-dll.h" #

视频人脸检测——Dlib版(六)

往期目录 视频人脸检测--Dlib版(六) OpenCV添加中文(五) 图片人脸检测--Dlib版(四) 视频人脸检测--OpenCV版(三) 图片人脸检测--OpenCV版(二) OpenCV环境搭建(一) 更多更新,欢迎访问我的github:https://github.com/vipstone/faceai 前言 Dlib的人脸识别要比OpenCV精准很多,一个是模型方面的差距,在一方面和OpenCV的定位有关系,OpenCV是一个综合性的视觉处理库,既然这么精准,那就一起赶快来看吧. 视

21个项目玩转深度学习:基于TensorFlow的实践详解06—人脸检测和识别——数据集

书籍:<21个项目玩转深度学习:基于TensorFlow的实践详解> 人脸检测 FDDB FDDB是UMass的数据集,被用来做人脸检测(Face Detection).这个数据集比较大,比较有挑战性.而且作者提供了程序用来评估检测结果,所以在这个数据上面比较算法也相对公平. 2845 张图片,其中包含了 5171 张人脸: 包含了各种遮挡,高难度的姿态,低分辨率以及对焦模糊的人脸: 用椭圆来标定人脸区域: 同时包括灰度图和彩色图. 人脸识别 LFW 户外标记人脸数据集LFW (Labeled

Python学习案例之视频人脸检测识别

前言 上一篇博文与大家分享了简单的图片人脸识别技术,其实在实际应用中,很多是通过视频流的方式进行识别,比如人脸识别通道门禁考勤系统.人脸动态跟踪识别系统等等. 案例 这里我们还是使用 opencv 中自带了 haar人脸特征分类器,通过读取一段视频来识别其中的人脸. 代码实现: # -*- coding: utf-8 -*- __author__ = "小柒" __blog__ = "https://blog.52itstyle.vip/" import cv2 i

C# USB视频人脸检测

此程序基于 虹软人脸识别进行的开发SDK下载地址:https://ai.arcsoft.com.cn/ucenter/user/reg?utm_source=csdn1&utm_medium=referral **前提条件**从虹软官网下载获取ArcFace引擎应用开发包,及其对应的激活码(App_id, SDK_key) 将获取到的开发包导入到您的应用中 App_id与SDK_key是在初始化的时候需要使用**基本类型** 所有基本类型在平台库中有定义. 定义规则是在ANSIC 中的基本类型

【项目实战派】图像处理项目硬件选型

[项目实战派]图像处理项目的硬件平台选型 一直以来我都对嵌入式系统比较感兴趣,因为感到图像处理最终还是要走向便携式.移动化的.这里讲自己对图像处理项目的硬件平台选型这块的想法进行交流,欢迎交流.批评. 一.典型图像处理系统构建 ①相机与镜头--这部分属于成像器件,通常的视觉系统都是由一套或者多套这样的成像系统组成,如果有多路相机,可能由图像卡切换来获取图像数据,也可能由同步控制同时获取多相机通道的数据.根据应用的需要相机可能是输出标准的单色视频(RS-170/CCIR).复合信号(Y/C).RG

MyElipse6.5环境下java调用vs2010动态链接库DLL人脸检测

Java调用C++动态链接库的网络上的文章也很多,但是还是有个别的问题没有提到,导致操作起来还是难度较大,关键是程序的疑难杂症不好治. 准备工具:vs2010,java1.6,MyElipse6.5,opencv2.4.6(其他版本请留意程序中的版本号),摄像头. 操作流程,流水式操作: 1.先建立文件FaceDetect.java文件并通过指令生成.h头文件 FaceDetect.java的代码: public class FaceDetect { static { System.loadLi