本博文IDE为vs2013

OpenCV2.49

话不多说,先看视频演示(20S演示):

如下:

https://v.youku.com/v_show/id_XMjYzMzkxMTYyMA==.html?spm=a2h0w.8278793.2736843.4#paction

程序截图如下:

如何来用OpenCV来实现能。

下面给出OpenCV实现人脸检测的一般步骤:

1.加载人脸检测器

2.开启摄像头

3.对图片进行灰度处理(其实可以不处理,上图中原图的标题栏就是未进行灰度处理进行的检测,这里的灰度是为下节人脸识别打基础)

4.对图片进行直方图均衡化(其实可以不处理,上图中原图的标题栏就是未进行灰度处理进行的检测和灰度图是为进行均衡化识别,这里的均衡化是为下节人脸识别打基础)

5.人脸检测

总结下,如果单单只要人脸检测,可以的步骤是1,2,5

本博客把1,2,5,

1,2,3,5

1,2,3,4,5

都演示了出来。

下面是完整的代码,本代码还有大量注释,在此不再具体说明哪个函数有什么用。

下面上源码:

#include <opencv.hpp>
#include <opencv2/core/core.hpp>
#include <iostream>using namespace cv;void Pic2Gray(Mat camerFrame,Mat &gray)
{//普通台式机3通道BGR,移动设备为4通道if (camerFrame.channels() == 3){cvtColor(camerFrame, gray, CV_BGR2GRAY);}else if (camerFrame.channels() == 4){cvtColor(camerFrame, gray, CV_BGRA2GRAY);}elsegray = camerFrame;
}int main()
{//加载Haar或LBP对象或人脸检测器CascadeClassifier faceDetector;std::string faceCascadeFilename = "haarcascade_frontalface_default.xml";//友好错误信息提示try{faceDetector.load(faceCascadeFilename);}catch (cv::Exception e){}if (faceDetector.empty()){std::cerr << "脸部检测器不能加载 (";std::cerr << faceCascadeFilename << ")!" << std::endl;exit(1);}//打开摄像头VideoCapture camera(0);while (true){Mat camerFrame;camera >> camerFrame;if (camerFrame.empty()){std::cerr << "无法获取摄像头图像" << std::endl;getchar();exit(1);}Mat displayedFrame(camerFrame.size(),CV_8UC3);//人脸检测只试用于灰度图像Mat gray;Pic2Gray(camerFrame, gray);//直方图均匀化(改善图像的对比度和亮度)Mat equalizedImg;equalizeHist(gray, equalizedImg);//人脸检测用Cascade Classifier::detectMultiScale来进行人脸检测int flags = CASCADE_FIND_BIGGEST_OBJECT|CASCADE_DO_ROUGH_SEARCH;    //只检测脸最大的人//int flags = CASCADE_SCALE_IMAGE;   //检测多个人Size minFeatureSize(30, 30);float searchScaleFactor = 1.1f;int minNeighbors = 4;std::vector<Rect> faces;faceDetector.detectMultiScale(equalizedImg, faces, searchScaleFactor, minNeighbors, flags, minFeatureSize);//画矩形框cv::Mat face;cv::Point text_lb;for (size_t i = 0; i < faces.size(); i++){if (faces[i].height > 0 && faces[i].width > 0){face = gray(faces[i]);text_lb = cv::Point(faces[i].x, faces[i].y);cv::rectangle(equalizedImg, faces[i], cv::Scalar(255, 0, 0), 1, 8, 0);cv::rectangle(gray, faces[i], cv::Scalar(255, 0, 0), 1, 8, 0);cv::rectangle(camerFrame, faces[i], cv::Scalar(255, 0, 0), 1, 8, 0);}}imshow("直方图均匀化", equalizedImg);imshow("灰度化", gray);imshow("原图", camerFrame);waitKey(20);}getchar();return 0;
}

OpenCV人脸检测(完整源码+思路)相关推荐

  1. 基于PCA 人脸识别/人脸识别算法/人脸检测程序源码MATLAB ELM+PCA人脸识别 PCA人脸识别matlab代码 基于PCA算法的人脸识别

    1.基于PCA的人脸识别代码 2.MATLAB ELM+PCA人脸识别 2.基于PCA的人脸识别(matlab)(采用PCA算法进行人脸识别,通过抽取人脸的主要成 分,构成特征脸空间,识别时将测试图像 ...

  2. haar 人脸检测跟踪源码整理

    人脸跟踪 有puttext用法 https://github.com/ypbwith/Haar_cascade_tracking 人脸检测: opencv3版本: https://github.com ...

  3. AidLux “人脸测试”案例源码详解

    "人脸检测"案例源码详解 testface.py用于进行人脸检测 构建APP框架和添加主要控件 人脸关键点识别的方法 打开人脸测试案例 1.在VScode中进入代码编辑状态. 2. ...

  4. python opencv人脸识别考勤系统的完整源码

    这篇文章主要介绍了python opencv人脸识别考勤系统的完整源码,本文给大家介绍的非常详细,希望对大家的学习或工作具有一定的参考借鉴价值. 代码如下: import wx import wx.g ...

  5. 基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]

    1.视频演示: [项目分享]Python基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]_哔哩哔哩_bilibili 2.图片演示: 3.算法原理: 该博客提出的移动侦测即是根据视频 ...

  6. Python基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]

    1.视频演示: [项目分享]Python基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]_哔哩哔哩_bilibili 2.图片演示: 3.明厨亮灶: 餐饮企业的厨房卫生状况一直饱受消 ...

  7. Python基于OpenCV高空抛物检测系统[完整源码&部署教程]

    1.视频演示: [项目分享]Python基于OpenCV高空抛物检测系统[完整源码&部署教程]_哔哩哔哩_bilibili 2.图片演示: 3.算法原理: 参考该博客提出的移动侦测法,即是根据 ...

  8. 开源毕业设计:基于嵌入式ARM-Linux的应用OpenCV和QT实现的人脸识别系统(源码+论文)

    毕业一载有余,把毕业设计作品分享一下,希望能帮助到有需要的同学们. 资料获取: 帮助/答疑/辅导...等请联系博主,请点如下链接: linux_face.txt · zengzr/share_cont ...

  9. Python基于OpenCV的异常行为检测系统[源码&部署教程]

    1.项目背景 智能视频监控(Intelligent Video Surveillance , IVS)[1.2·3.4是计算机视觉技术5l在安防领域的应用,实现了由"被动监控"到& ...

最新文章

  1. suse linux登录黑屏,SUSE Linux登录时黑屏解决办法
  2. php引入类的位置,php如何在一个类中引入另外一个类
  3. 【Linux网络编程】循环服务器之TCP模型
  4. org.apache.hadoop.hive.metastore.api.InvalidObjectException: Role public already exists.
  5. JS对文本框输入字符的限制
  6. UX2 beta 3正式发布!!
  7. Java集合框架知多少——干货!!!
  8. 分页组件change_javascript原生瀑布流+图片懒加载组件
  9. TF-tf.keras.layers.Attention-Attention机制
  10. 【转】winrar命令行详解
  11. Oracle11g安装包下载
  12. 无线网络密码破解方法大全(附破解软件下载)
  13. Echart资源网站
  14. win 7计算机图标变了,win7系统桌面图标变成一样的解决方法
  15. 体脂秤方案——体脂秤的原理是什么?
  16. Java面试题(八)-----如何将一段逗号分隔的字符串转换成一个字符串数组
  17. 专利快速预审主体备案服务指南
  18. Datawhale组队学习周报(第022周)
  19. deepin efi 启动u盘_【2017.12.16】启动U盘简单手动制作BIOS+UEFI的syslinux/grub/boomgr/grub2互转...
  20. opencv2矩阵操作

热门文章

  1. java双重for循环流程图_java 流程执行 循环 foreach循环
  2. Emacs_238_company中使用C-j和C-k选择候选项
  3. 创龙基于TI Sitara处理器的EtherCAT主站开发案例
  4. [日常训练] 太空飞船
  5. 【ARM攒机指南——AI篇】5大千万级设备市场技术拆解
  6. 微信小程序剪裁分享到朋友圈的图片
  7. 356页14万字高端商业办公综合楼弱电智能化系统2022版
  8. URL中文传输乱码解决
  9. 【基于容器的部署、扩展和管理】3.6 集群监控和日志收集
  10. Eric6安装及配置