C++:opencv 人脸检测

问题描述:

要求

输入一张图片;输出圈出人脸的图片;
vs2015; opencv3.4.6;

效果

输入:

输出:

代码实现:

#include "opencv2/objdetect.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"#include <iostream>using namespace std;
using namespace cv;/** Function Headers */
void detectAndDisplay( Mat frame );/** Global variables */
CascadeClassifier face_cascade;
CascadeClassifier eyes_cascade;/** @function main */
int main( )
{if(!face_cascade.load("haarcascade_frontalface_alt.xml")) //opencv自带的人脸识别{cout << "--(!)Error loading face cascade\n";return -1;};if(!eyes_cascade.load("haarcascade_eye_tree_eyeglasses.xml")){cout << "--(!)Error loading eyes cascade\n";return -1;};Mat frame = imread("lena.jpg");//输入图片if (frame.empty()){cout << " wrong" << endl;}detectAndDisplay(frame);return 0;
}
/** @function detectAndDisplay */
void detectAndDisplay( Mat frame )
{Mat frame_gray;cvtColor( frame, frame_gray, COLOR_BGR2GRAY );equalizeHist( frame_gray, frame_gray );//-- Detect facesstd::vector<Rect> faces;face_cascade.detectMultiScale( frame_gray, faces );for ( size_t i = 0; i < faces.size(); i++ ){Point center( faces[i].x + faces[i].width/2, faces[i].y + faces[i].height/2 );ellipse( frame, center, Size( faces[i].width/2, faces[i].height/2 ), 0, 0, 360, Scalar( 255, 0, 255 ), 4 );Mat faceROI = frame_gray( faces[i] );//-- In each face, detect eyesstd::vector<Rect> eyes;eyes_cascade.detectMultiScale( faceROI, eyes );for ( size_t j = 0; j < eyes.size(); j++ ){Point eye_center( faces[i].x + eyes[j].x + eyes[j].width/2, faces[i].y + eyes[j].y + eyes[j].height/2 );int radius = cvRound( (eyes[j].width + eyes[j].height)*0.25 );circle( frame, eye_center, radius, Scalar( 255, 0, 0 ), 4 );}}//-- Show what you gotimshow( "Face detection", frame );waitKey(0);
}

总结

  1. 创建一个分类器
  2. 加载训练模型
  3. 创建保存人脸的矩阵
  4. 调包
  5. 绘图
  6. 显示
7. CascadeClassifier face_cascade;
8. face_cascade.load("训练好的xml模型");
9. std::vector<Rect> faces;//人脸的矩阵数据
10. face_cascade.detectMultiScale( frame_gray, faces );//输入人脸的照片; 输出人脸的矩形数据
11. Point center( faces[i].x + faces[i].width/2, faces[i].y + faces[i].height/2 );ellipse( frame, center, Size( faces[i].width/2, faces[i].height/2 ), 0, 0, 360, Scalar( 255, 0, 255 ), 4 );//画
12.  imshow( "Face detection", frame );//显示

C++:opencv 人脸检测相关推荐

  1. OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)

    OpenCV与图像处理学习十七--OpenCV人脸检测(含代码) 一.人脸识别概要 1.1 人脸检测 1.2 人脸对齐(Face Alignment) 1.3 人脸特征提取(Face Feature ...

  2. OpenCV-Python实战(21)——OpenCV人脸检测项目在Web端的部署

    OpenCV-Python实战(21)--OpenCV人脸检测项目在Web端的部署 0. 前言 1. OpenCV 人脸检测项目在 Web 端的部署 1.1 解析请求并构建响应 1.2 构建请求进行测 ...

  3. keras系列︱人脸表情分类与识别:opencv人脸检测+Keras情绪分类(四)

    人脸识别热门,表情识别更加.但是表情识别很难,因为人脸的微表情很多,本节介绍一种比较粗线条的表情分类与识别的办法. Keras系列: 1.keras系列︱Sequential与Model模型.kera ...

  4. .NetCore——基于OpenCV人脸检测

    .NetCore--基于OpenCV人脸检测 一.介绍 在.NetCore中,基于OpenCV实现对静态图片的人脸识别,检测人脸是否存在,且存在的数量.注: 不能自动学习人脸特征. 二.使用 首先引入 ...

  5. 人脸识别系统——OpenCV人脸检测

    EduCoder:人脸识别系统--OpenCV人脸检测 第1关:图片基本操作 编程要求: 请在右侧编辑器中的BEGIN-END之间编写代码,完成如下要求: 导入openCV库(cv2): 读取路径 s ...

  6. 基于Haar分类器的OpenCV人脸检测实例

    一.人脸的Haar特征分类器是什么 人脸的Haar特征分类器就是一个XML文件,该文件中会描述人脸的Haar特征值.当然Haar特征的用途可不止可以用来描述人脸这一种,用来描述眼睛,嘴唇或是其它物体也 ...

  7. 【EduCoder答案】人脸识别系统——OpenCV人脸检测

    简介 答案查询的入口网页版 其他各类实训答案的目录见这里 答案获取的方法简介见这里 并不是所有的关卡都有答案,有些只有部分关卡有 不要直接复制答案哦 人脸识别系统 -- OpenCV人脸检测 > ...

  8. opencv人脸检测总结

    主要参考了很多大神的总结,做了自己的整理,还没有完成,,后续不断完善补充 opencv人脸检测总结 一.人脸检测介绍 1. 人脸检测分类 基于知识方法主要利用先验知识将人脸看作器官特征的组合,根据眼睛 ...

  9. C# OpenCV人脸检测(三) DNN加载FaceDetectorYN模型做人脸检测

    点击下方卡片,关注"OpenCV与AI深度学习"公众号 视觉/图像重磅干货,第一时间送达 本文作者Color Space,文章未经作者允许禁止转载! 本文将介绍C# OpenCV人 ...

最新文章

  1. 阿卡姆疯人院需要java吗_蝙蝠侠阿甘疯人院 这个报错 怎么解决 哪位大神知道...
  2. python基本代码教程-(Python基础教程之三)Python代码中添加注释
  3. 杜拉拉升职记(1和2)
  4. cad插件_抖音最火CAD插件教程汇总
  5. ftp连接显示被服务器被拒绝,ftp连接服务器被拒绝原因
  6. 【metasploit】1 渗透测试与metasploit基础介绍 [PTES|msf|armitage安装]
  7. 计算机高手纯键盘操作,没有鼠标,高手是如何纯键盘操作电脑的?
  8. Exception in thread “main“ java.lang.ArrayIndexOutOfBoundsException: 6 at lian39.main(lian39
  9. (一)Activiti 数据库25张表——一般数据1 (ACT_GE_BYTEARRAY)
  10. 使用Apple第三方登录Java版
  11. python语言提供的数字类型有哪些_Python语言中数字类型有哪些?
  12. 在线计算机容量单位换算,体积换算 | 容量计量单位转换器 —在线工具
  13. java计算机毕业设计小型企业员工工资管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  14. [elasticsearch笔记] Query DSL - percolate
  15. failed to push some refs to 'git@xxx.xxx.xxx.xxx:finger-shoot/shoot-admin.git'
  16. scum服务器 指定资源,SCUM服务器配置详解 参数设置推荐
  17. 腾讯的web QQ接口
  18. C4D致富经典入门到精通(三)
  19. ibatis升级到mybatis总结
  20. 关于使用多普达windows mobile 手机使用联通卡不能上网的问题

热门文章

  1. android滑动图形验证码,Android使用更简单的方式实现滑块拼图验证码功能
  2. NO58、对称的二叉树(可以再刷一遍)
  3. IPsec ISAKMP协议
  4. Ubuntu —— 网络通讯 :: Paho_MQTT C Cient
  5. MP3怎么转换成苹果音频格式?如何将mp3转成m4r格式
  6. python 数组拷贝,如何将数据从一个numpy数组复制到另一个数组
  7. webgl的透视投影矩阵
  8. 全局数组和局部数组的初始化 全局数组可以开多大
  9. android斜杠特殊字符,特殊字符——反斜杠(\)
  10. Kylin源码分析系列三—rowKey编码