一、前言

使用OpenCV实现从摄像头实时检测人脸,并用方框框出来。

这里主要通过OpenCV里自带的一些函数和Haar特征分类器【脸部】的来实现人脸检测。仅适合初学者。

能力有限,理论不做解释,仅含简单代码逻辑。

二、主要代码

开启摄像头代码:

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std;int main() {VideoCapture cap(0);if (!cap.isOpened()) {cout << "打开摄像头失败!" <<endl;return -1;}Mat frame,grayFrame;Mat edges;bool stop = false;while (!stop) {cap >> frame;//将图像变灰、模糊,保留轮廓//cvtColor(frame, edges, COLOR_BGR2GRAY);//GaussianBlur(edges, edges, Size(7, 7), 1.5, 1.5);//Canny(edges, edges, 0, 30, 3);//imshow("Camera", edges);//显示处理后的轮廓图imshow("Camera", frame);//直接显示从摄像头的图像if (waitKey(30) >= 0)//ESC键退出stop = true;}return 0;
}

总代码:

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std;void DetectFace(Mat);
CascadeClassifier faceCascade;
int main() {//需要加载对应的Haar特征分类器,可到OpenCV安装目录下OpenCV/opencv/sources/data/haarcascades查找faceCascade.load("D:/Program Files/OpenCV/opencv/sources/data/haarcascades/haarcascade_frontalface_alt.xml");VideoCapture cap(0);if (!cap.isOpened()) {cout << "打开摄像头失败!" <<endl;return -1;}Mat frame;bool stop = false;while (!stop) {cap >> frame;DetectFace(frame);//人脸检测if (waitKey(30) >= 0)stop = true;}return 0;
}
void DetectFace(Mat img) {vector<Rect> faces;Mat imgGray;cvtColor(img, imgGray, COLOR_BGR2GRAY);//灰化equalizeHist(imgGray, imgGray);//直方图均匀化faceCascade.detectMultiScale(imgGray, faces, 1.2, 5, 0, Size(30, 30));//检测脸部位置if (faces.size() > 0) {for (size_t i = 0; i < faces.size(); i++) {//可设置显示文字信息到矩形框上//putText(img, "hello", Point(faces[i].x, faces[i].y - 10), FONT_HERSHEY_COMPLEX, 1, Scalar(0, 255, 0));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("Face Detection", WINDOW_AUTOSIZE);imshow("Face Detection", img);
}

三、运行截图

图片为打马赛克之后的,真实效果请自行测试。

不知道是不是摄像头像素不够还是处理器不够快,又或者说东拼西凑的代码有问题,总之在运行的时候CPU占用率有点高,而且检测不能像系统自带的相机(同样有人脸检测并框出来)那样快、准。

四、后记

代码仅供参考。

参考链接

OpenCV人脸目标检测、摄像头实时检测相关推荐

  1. opencvmediapipe 人脸检测+摄像头实时

    文章目录 单张人脸关键点检测 单张图像人脸检测 摄像头实时关键点检测 单张人脸关键点检测 定义可视化图像函数 导入三维人脸关键点检测模型 导入可视化函数和可视化样式 读取图像 将图像模型输入,获取预测 ...

  2. python 人脸关键点检测_opencv+python+dlib人脸关键点检测、实时检测

    安装的是anaconde3.python3.7.3,3.7环境安装dlib太麻烦, 在anaconde3中新建环境python3.6.8, 在3.6环境下安装dlib-19.6.1-cp36-cp36 ...

  3. jetson nano yolov5部署及USB摄像头实时检测 初次尝试

    (1条消息) Jetson nano部署Yolov5 --从烧录到运行 1:1复刻全过程_IamYZD的博客-CSDN博客_jetson nano部署yolov5 1.yolov5部署 学校发的板子不 ...

  4. 薄膜表面瑕疵在线检测系统实时检测出表面瑕疵的具体位置

    薄膜表面瑕疵在线检测系统实时检测出表面瑕疵的具体位置 导读:随着人们对产品质量要求越来越高,产品表面质量检测变得日益重要,过去很多表面缺质量测是依靠人工检测,这种检测方法效率低,受到人的情绪影响比较大 ...

  5. python基于opencv的人脸检测(有最详细的注释)摄像头实时检测人脸

    主要实现功能: 通过opencv的模块的内置的方法打开电脑摄像头,读取每一帧数据进行分析.通过界面的方式在界面里实时更新摄像头视频并且标记出人脸. 效果图: 代码: 这部分代码可以用来检测opencv ...

  6. 【yolo】ubuntu18.04 yolo打开摄像头实时检测框目标 转化pth文件为onnx

    heziyi@heziyi-ZenBook-UX425IA-U4700IA:~/桌面/PyTorch-YOLOv3$ python3 video.py yolov3_ckpt_69.onnx Trac ...

  7. python之dlib使用摄像头实时检测人脸

    # Copyright (C) 2018-2021 coneypo # SPDX-License-Identifier: MIT# 摄像头实时人脸特征描述子计算 / Real-time face de ...

  8. CMU开源:价值百万美元的多目标人体关键点实时检测

    相关文章:开源|2017 CVPR(Oral Paper):多目标实时体态估测 项目开源 主要内容介绍: OpenPose是一个利用OpenCV和Caffe并以C++写成的开源库,用来实现多线程的多人 ...

  9. 调用百度API,来实现人脸活体(人脸展示攻击)(人脸反欺骗)的实时检测

    目录 一.登录百度API网站,申请API接口 二.创建应用列表,查看API Key 与 Secret Key 三.应用API Key 与 Secret Key,将模型部署在本地环境中 四.以视频流的方 ...

最新文章

  1. 为什么微博“越改版越被骂“?数据却”越骂越好“?
  2. 探索MySql.Data.dll
  3. 惠普服务器bios查看硬件属性,查看硬件信息
  4. python 中的static-method (静态函数), classmethod(类函数 ), 成员函数
  5. vs 启动调用的目标发生异常_协程中的取消和异常 | 取消操作详解
  6. 2021年了,Redis复制原理你应该理解!
  7. 把照片存QQ相册会越来越模糊,你们会把照片存在哪里?
  8. 12个有趣的C语言问答_sunyrising-ChinaUnix博客
  9. python session过期_session的工作原理、django的超时时间设置及session过期判断
  10. dsp2812 linux开发板,自制DSP2812开发板
  11. SVD降维(相当好理解的文章)
  12. 关于uni-app隐藏安卓虚拟键
  13. 3D建模,打印正当时
  14. 蒙特卡洛方法 (Monte Carlo Method)(5)
  15. Java中一次对象的自我拯救探究
  16. mysql 中文截取_中文字符串截取
  17. java 获取叶子节点个数_数据结构编程: 统计二叉树中叶子结点的个数。
  18. 离散对数和椭圆曲线加密原理
  19. Python一维列矩阵转换成行矩阵
  20. Android Studio 1.3RC版 build加速

热门文章

  1. 内存,外存,运存,显存,闪存,硬盘,SSD等概念
  2. python实现三角形面积计算
  3. DRILLNET 2.0------第十四章 钻具扭矩/摩阻模型
  4. webpack 简单使用
  5. leetcode——340.至多包含 K 个不同字符的最长子串
  6. 拓嘉辰丰:怎样把买家秀做好促进转化
  7. 动态条形图展示人均GDP,最后以gif格式输出
  8. 互联网时代结束了吗?
  9. how to trouble shoot thread hangs
  10. 一位清华差生9年的北京生活,请你一字一句看完