环境:电脑镜头/VS 2019/opencv/C++

1. 识别人脸

  1. 实现:
    打开电脑的摄像头;
    对画面里的人脸识别,画图框。
1.1 问题

图框总是缺线,人头歪一定角度后不能识别,张开嘴巴图框会乱。

1.2 注意事项

haarcascade_frontalface_alt2和 “源文件” 应该放到一个路径下。

#include<iostream>
#include<opencv2/objdetect/objdetect.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include <vector>
using namespace cv;
using namespace std;//人脸检测的类
CascadeClassifier faceCascade;int main()
{faceCascade.load("haarcascade_frontalface_alt2.xml");   //加载分类器,注意文件路径VideoCapture cap;cap.open(0);   //打开摄像头//cap.open("../data/test.avi");   //打开视频Mat img, imgGray;vector<Rect> faces;//开始调试的时候这里报错,最终定义到了忘记using namespace std。int c = 0;if (!cap.isOpened()){return 1;}while (c != 27)//按Esc退出{cap >> img;if (img.channels() == 3){cvtColor(img, imgGray, COLOR_RGB2GRAY);}else{imgGray = img;}faceCascade.detectMultiScale(imgGray, faces, 1.2, 2, 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);    //框出人脸位置}}namedWindow("Camera", 0); imshow("Camera", img);c = waitKey(4);//延迟4ms//std::cout << c << std::endl;//system("pause");}return 0;
}

2. 识别人脸眼睛

2.1 效果

人脸识别加框
眼睛加圆圈

2.2 问题

图框不稳定,识别率不高。

#include<iostream>
#include <opencv2/core/core.hpp>
#include<opencv2/objdetect/objdetect.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include <vector>
using namespace cv;
using namespace std;using namespace std;
using namespace cv;
void DetectFace(Mat, Mat);
CascadeClassifier faceCascade;//人脸检测的类CascadeClassifier eyes_Cascade;
int main(int argc, char** argv) {VideoCapture cap;if (!cap.open(0)) {cout << "摄像头打开失败!!" << endl;return -1;}if (!faceCascade.load("haarcascade_frontalface_alt2.xml")) {cout << "人脸检测级联分类器没找到!!" << endl;return -1;}if (!eyes_Cascade.load("haarcascade_eye_tree_eyeglasses.xml")) {cout << "眼睛检测级联分类器没找到!!" << endl;return -1;}Mat img, imgGray;int fps = 60;while (true) {cap >> img;cvtColor(img, imgGray, COLOR_BGR2GRAY);equalizeHist(imgGray, imgGray);//直方图均匀化DetectFace(img, imgGray);waitKey(1000 / fps);}return 0;
}void DetectFace(Mat img, Mat imgGray) {namedWindow("src", WINDOW_AUTOSIZE);vector<Rect> faces, eyes;faceCascade.detectMultiScale(imgGray, faces, 1.2, 5, 0, Size(30, 30));for (auto b : faces) {cout << "输出一张人脸位置:(x,y):" << "(" << b.x << "," << b.y << ") , (width,height):(" << b.width << "," << b.height << ")" << endl;}if (faces.size() > 0) {for (size_t i = 0; i < faces.size(); i++) {putText(img, "people!", Point(faces[i].x, faces[i].y - 10), FONT_HERSHEY_PLAIN, 2.0, Scalar(0, 0, 255));rectangle(img, Point(faces[i].x, faces[i].y), Point(faces[i].x + faces[i].width, faces[i].y + faces[i].height), Scalar(0, 0, 255), 1, 8);cout << faces[i] << endl;//将人脸从灰度图中抠出来Mat face_ = imgGray(faces[i]);eyes_Cascade.detectMultiScale(face_, eyes, 1.2, 2, 0, Size(30, 30));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(img, eye_center, radius, Scalar(65, 105, 255), 4, 8, 0);}}}imshow("src", img);
}

参考:
[1] 人眼识别
[2] Videocapture类使用介绍

VS2019 OPENCV C++ 人脸和眼睛识别 01相关推荐

  1. 基于opencv的人脸检测与识别(python)(1)

    基于opencv的人脸检测与识别(python语言)(1) 人脸检测和识别技术就目前而言,已经相对成熟,各类算法层出不穷,这都归功于各位奋斗在一线的大佬的努力(站在巨人的肩膀上的感觉就是爽).本文是参 ...

  2. 【OpenCV】人脸检测和识别

    文章目录 前言 一.人脸检测 1.基于Haar的人脸检测 2.基于深度学习的人脸检测 二.人脸识别 1.特征脸EigenFaces 2.人鱼脸FisherFaces 3.局部二进制编码直方图LBPH ...

  3. opencv(人脸检测和识别)

    Opencv的人脸检测函数,定义了具体可跟踪对象类型的数据文件. Haar级联分类器,通过对比分析相邻图像区域来判断给定图像或子图像与已知对象是否匹配. 两个图像的相似程度可以通过它们对应特征的欧式距 ...

  4. 基于opencv的人脸、眼睛、鼻子、微笑识别

    对于眼睛.鼻子等识别需要首先进行opencv人脸识别,这样减少计算量 主要步骤如下: 1.导入级联检测器,一般下载cv2会自带一些xml文件,除了mouth.nose需要另外下载然后放到D:\mini ...

  5. 使用OpenCV-python识别图片视频中的人脸和眼睛

    文章目录 思路和核心代码 识别图像中的人脸 识别视频中的人脸和眼睛 思路和核心代码 思路如下: 首先需要一个训练好的人脸和眼睛特征数据库,用于识别人脸和眼睛 识别出人脸和眼睛之后,返回所在的区域(一般 ...

  6. opencv算法+人脸检测

    文章目录 ORB算法 视频读写 图像人脸识别 摄像头实时人脸检测 ORB算法 orb算法结合了Fast和Brief算法,提出了构造金字塔,为Fast特征点添加了方向,从而使得关键点具有了尺度不变性和旋 ...

  7. pytorch 实现人脸检测与识别

    pytorch + opencv 实现人脸检测与识别 准备工作 人脸检测 opencv实现人脸检测 卷积神经网络 CNN 实现人脸检测 数据导入 CNN模型训练 人脸检测 存在的问题 人脸识别 获取数 ...

  8. opencv 训练人脸对比_【项目案例python与人脸识别】基于OpenCV开源计算机视觉库的人脸识别之python实现...

    " 本项目是一个基于OpenCV开源库使用python语言程序实现人脸检测的项目,该项目将从[项目基础知识](即人脸识别的基本原理).[项目实践](人脸识别所需要的具体步骤及其python程 ...

  9. python表情识别程序_Python+Dlib+Opencv实现人脸采集并表情判别功能的代码

    一.dlib以及opencv-python库安装 介于我使用的是jupyter notebook,所以在安装dlib和opencv-python时是在 这个命令行安装的 dlib安装方法: 1.若可以 ...

最新文章

  1. 禁止微信下拉 露出黑色背景
  2. python3基础语法-Python3入门(三)——Python基础语法
  3. Linux 权能综述
  4. pip install jupyter报错30ERROR
  5. linux小知识之终端
  6. echo字符集 shell_Xshell 能显示中文 但输入的中文都变成了问号
  7. linux内核线程socket,从Linux源码看Socket(TCP)的accept
  8. 前端学习(1299):gulp插件
  9. linux ping策略打开_Linux Iptables允许或阻止ICMP ping请求
  10. 专业测试油耗的软件,油耗软件app哪个好_检测汽车油耗的软件_油耗记录软件车机版...
  11. 计算机键盘使用大写用什么键,操作方法:如何解决Win10系统键盘的大小写切换键(大写锁定)的问题?...
  12. jQuery到Vue的迁移之路
  13. 计算机组成原理--填空,简答,判断,计算大题
  14. 关于0xffffffff 到底是什么意思?
  15. vue将毫秒为单位的时间转化成分钟和秒
  16. 数据分析报告流程展现
  17. 读书笔记软件调试之道 :从大局看调试-理想的调试环境
  18. 7-6 判断题 (15分)
  19. UE4学习笔记#三、蓝图混合空间
  20. NRLMSISE-00、太阳辐射流量F107、地磁活动指数Ap

热门文章

  1. EMUI11什么时候升级鸿蒙,华为EMUI11.1有望于下月发布 改用鸿蒙内核 可升级机型曝光...
  2. 前端开发:JS中时间戳和时间之间的转换
  3. PHP就业前景好不好一看便知,转行选择需谨慎!
  4. 小程序中for循环列表后点击不同列表跳转不同页面
  5. 猴子选大王——CSharp数组
  6. matlab运行一直正忙,matlab一直显示正忙,没反应,求大神帮助
  7. 小波怎么选?——看图选
  8. JVM 启动参数详解
  9. ReactNative(学习部署){样式使用、图片、文本、布局、按钮、活动提示器、状态栏和背景图、开关和文本输入框}
  10. 动态规划+BFS+DFS+回溯+红黑树+排序+链表+位运算(B站优质学习资源链接,后续会继续更新)