C++ opencv人脸识别框

2023-11-03

需求:

视频实时定位人脸位置,并画框,类似效果如下:

分析:

取视频帧,每一帧其实就类似一张图片,利用opencv的人脸识别模块,检测每一帧并进行划线,处理完成后显示,最后组成就是动态的带人脸识别框的视频。

解决方法:(下面是每一帧数据的处理方法)

①加载opencv的相关库,包含头文件。我的库版本是249,需要的库有下面几个,其中opencv_objdetect249是识别需要用的

opencv_core249.dll
opencv_imgproc249.dll
opencv_highgui249.dll
opencv_objdetect249.dll

②加载分类器haarcascades

Haar特征分类器就是一个XML文件,该文件中会描述人体各个部位的Haar特征值。包括人脸、眼睛、嘴唇等等。一般放在Opencv的sources\data\haarcascades下,有以下的分类器:

haarcascade_eye.xml
haarcascade_eye_tree_eyeglasses.xml
haarcascade_frontalface_alt.xml
haarcascade_frontalface_alt_tree.xml
haarcascade_frontalface_alt2.xml
haarcascade_frontalface_default.xml
haarcascade_fullbody.xml
haarcascade_lefteye_2splits.xml
haarcascade_lowerbody.xml
haarcascade_mcs_eyepair_big.xml
haarcascade_mcs_eyepair_small.xml
haarcascade_mcs_leftear.xml
haarcascade_mcs_lefteye.xml
haarcascade_mcs_mouth.xml
haarcascade_mcs_nose.xml
haarcascade_mcs_rightear.xml
haarcascade_mcs_righteye.xml
haarcascade_mcs_upperbody.xml
haarcascade_profileface.xml
haarcascade_righteye_2splits.xml
haarcascade_smile.xml
haarcascade_upperbody.xml

其中:haarcascade_frontalface_alt.xml和haarcascade_frontalface_alt2.xml都是人脸识别的Haar特征分类器了。

③进行检测和画图

参考示例:


#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/opencv.hpp>
 
#include <vector>
#include <cstdio>
 
using namespace std;
using namespace cv;
 

#define MAX_SIZE 100000
int main()
{
	
	// 【1】加载分类器,xml文件要放你指定目录下,
	//cascade.load也行, 这里加static的目的是防止以后循环里多次load浪费时间
	static CascadeClassifier cascade("haarcascade_frontalface_alt.xml");
 
	Mat srcImage, grayImage,dstImage;
	// 【2】读取图片
	srcImage = imread("image.jpg");
	dstImage = srcImage.clone();
	imshow("【原图】", srcImage);
 
	grayImage.create(srcImage.size(), srcImage.type());
	cvtColor(srcImage, grayImage, CV_BGR2GRAY); // 生成灰度图,提高检测效率
 
	// 定义7种颜色,用于标记人脸
	Scalar colors[] =
	{
		// 红橙黄绿青蓝紫
		CV_RGB(255, 0, 0),
		CV_RGB(255, 97, 0),
		CV_RGB(255, 255, 0),
		CV_RGB(0, 255, 0),
		CV_RGB(0, 255, 255),
		CV_RGB(0, 0, 255),
		CV_RGB(160, 32, 240)
	};
 
	// 【3】检测
	vector<Rect> rect;
	rect.reserve(MAX_SIZE);		//vector要分配内存,否则多次detectMultiScale会崩
	cascade.detectMultiScale(grayImage, rect, 1.1, 3, 0/*cv::CASCADE_FIND_BIGGEST_OBJECT*/);  // 分类器对象调用	
 
	printf("检测到人脸个数:%d\n", rect.size());
 
	// 【4】标记--在脸部绘制矩形
	for (int i = 0; i < rect.size(); i++) 
	{
		rectangle(dstImage, rect[i].tl(), rect[i].br(), colors[3], 3);//绘制矩形
	}
 
	vector<cv::Rect>().swap(rect);	//释放内存

	// 【5】显示
	imshow("【人脸识别detectMultiScale】", dstImage);
	
	waitKey(0);
	return 0;
}

参考博客:

opencv人脸检测--detectMultiScale函数_walker lee的博客-CSDN博客_detectmultiscale

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ opencv人脸识别框 的相关文章

  • opencv 视频上的颜色阈值

    I am thresholding for a color range in an opencv video The goal is to seperate the B mode black and white information on
  • CvMat 和 Imread 与 IpImage 和 CvLoadImage

    使用 OpenCv 2 4 我有两个选项来加载图像 1 CvMat and Imread 2 IpImage and CvLoadImage 使用哪一个更好 我尝试将两者混合并最终出现段错误 imread返回一个Mat not CvMat
  • brew 链接 jpeg 问题

    我正在尝试安装opencv在 Mac OSX Lion 上 brew install opencv 我收到以下错误 以及其他一些类似的错误 Error The linking step did not complete successful
  • opencv中矩阵的超快中值(与matlab一样快)

    我正在 openCV 中编写一些代码 想要找到一个非常大的矩阵数组 单通道灰度 浮点数 的中值 我尝试了几种方法 例如对数组进行排序 使用 std sort 和选择中间条目 但与 matlab 中的中值函数相比 它非常慢 准确地说 在 ma
  • Python:opencv warpPerspective 既不接受 2 个也不接受 3 个参数

    我发现单应矩阵如下特征匹配 单应性教程 https docs opencv org 3 4 1 d1 de0 tutorial py feature homography html using M mask cv2 findHomograp
  • 如何设置K-means openCV c++的初始中心

    我正在尝试使用 OpenCv 和 Kmeans 对图像进行分割 我刚刚实现的代码如下 include opencv2 objdetect objdetect hpp include opencv2 highgui highgui hpp i
  • 如何计算图像中的 RGB 或 HSV 通道组合?

    我使用 python opencv 加载形状为 30 100 3 的图像 现在想要按颜色计算所有颜色的频率 我不是指单个通道 而是指通道组合 含义 3 个频道列表 例如 255 0 0 表示红色 255 255 0 表示黄色 100 100
  • 我可以使用 openCV 比较两张不同图像上的两张脸吗?

    我对 openCV 很陌生 我看到它可以计算出脸部并返回一个矩形来指示脸部 我想知道 openCV 是否可以访问两张包含一张脸的图像 并且我希望 openCV 返回这两个人是否相同的可能性 Thanks OpenCV 不提供完整的人脸识别引
  • 曲线/路径骨架二值图像处理

    我正在尝试开发一个可以处理图像骨架的路径 曲线的代码 我想要一个来自两点之间骨架的点向量 该代码在添加一些点后结束 我没有找到解决方案 include opencv2 highgui highgui hpp include opencv2
  • opencv形态扩张滤波器作为最大滤波器

    就像中值滤波器的定义一样 我可以将 最大滤波器 定义为局部窗口 例如dst x y max 3x3 局部窗口像素 但我在opencv中找不到这样的过滤器 最接近的是 dilate 函数 然后我使用 dilate 函数的默认配置 但结果不正确
  • 如何使用 Python 裁剪图像中的矩形

    谁能给我关于如何裁剪两个矩形框并保存它的建议 我已经尝试过这段代码 但效果不佳 import cv2 import numpy as np Run the code with the image name keep pressing spa
  • 如何确定与视频中物体的距离?

    我有一个从行驶中的车辆前面录制的视频文件 我将使用 OpenCV 进行对象检测和识别 但我停留在一方面 如何确定距已识别物体的距离 我可以知道我当前的速度和现实世界的 GPS 位置 但仅此而已 我无法对我正在跟踪的对象做出任何假设 我计划用
  • 从包含带边框的表格的图像中提取表格结构

    我正在尝试提取下表中的单元格位置 应用自适应阈值处理后 我能够获得细胞位置周围的轮廓 并且 HoughLines 获得垂直和水平结构元素 这是我的代码 img cv2 imread os path join img path file im
  • 2d 图像点和 3d 网格之间的交点

    Given 网格 源相机 我有内在和外在参数 图像坐标 2d Output 3D 点 是从相机中心发出的光线穿过图像平面上的 2d 点与网格的交点 我试图找到网格上的 3d 点 This is the process From Multip
  • 如何绘制更大的边界框和仅裁剪边界框文本 Python Opencv

    我正在使用 easyocr 来检测图像中的文本 该方法给出输出边界框 输入图像如下所示 Image 1 Image 2 使用下面的代码获得输出图像 But I want to draw a Single Bigger bounding bo
  • 在 Python 中将 OpenCV 帧流式传输为 HTML

    我正在尝试从 opencv Pyt hon 中的 URL 读取视频 然后逐帧处理它 然后将其发送到 HTML 页面 But I am only getting the first frame after that the program g
  • 如何使用 colorchecker 在 opencv 中进行颜色校准?

    我有数码相机获取的色彩检查器图像 我如何使用它来使用 opencv 校准图像 按照以下颜色检查器图像操作 您是想问如何进行颜色校准或如何使用 OpenCV 进行校准 为了进行颜色校准 您可以使用校准板的最后一行 灰色调 以下是您应该逐步进行
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • Opencv Mat内存管理

    内存管理对于图像类至关重要 在opencv中 图像类是cv Mat 它有一个微妙的内存管理方案 假设我已经有了自己的图像类SelfImage class SelfImage public int width int height unsig
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op

随机推荐

  • 蓝图使用接口通信

    实际上 类似于是c 中的实现接口 为了简便 两种物体 方块和灯 击中后 打印出击中的名字 首先 创建一个接口 打开该蓝图接口 写纯虚函数 将函数改名为printHitName 暂时不加入输入输出参数 创建灯的蓝图 在灯光蓝图类里 点击类设置
  • BUAA-2023软件工程团队项目——选题和需求分析

    BUAA MapForum 项目 这个作业属于哪个课程 2023北航敏捷软件工程 这个作业的要求在哪里 团队项目 选题和需求分析 我在这个课程的目标是 学习并实践软件工程开发的方法论 在把握整体流程和内容要素的基础上实践细节 培养开发技术
  • HBase表设计案例(陌陌案例)

    1 HBase的名称空间 1 1介绍 1 HBase中的名称空间类似于mysql中不同的数据库 HBase中有两个已经存在的名称空间 default hbase 2 hbase用于存放系统表 3 用户创建表时 如果不指定名称空间 默认放到d
  • Python框架之Django Web框架的使用(一)--快速入门

    作者主页 编程指南针 作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智
  • linux查看rsync的命令,Linux rsync 命令学习

    Rsync命令和cp命令很像 但是功能似乎更加复杂点 主要用来备份数据 看了网上一堆介绍的文章 感觉不是很通俗易懂 下面按照我的理解 做一些笔记 同步方式 之前接触过一些同步软件 例如坚果云 百度云盘等等 他们对于同步方式都是有一些选择项的
  • 选址问题

    选址问题 设施选址问题 Facility Location Problem 自20世纪60年代初期以来 在运筹学中一直占据着中心位置 它来自于工厂 仓库 超市 学校 医院 图书馆 火车站 代理服务器 传感器等位置的确定问题 设施选址问题是N
  • 计算机添加usb网络打印机,方便实用!教您如何简单地将USB打印机更改为无线打印机!...

    将USB打印机更改为无线打印机 只需完成三个主要步骤即可 首先 硬件准备 首先 您需要拥有一个带有USB端口和openwrt的路由器 编辑器使用RG100A 作为打印服务器 性能要求不高 只需将最初插入计算机USB的打印电缆插入路由器的US
  • 使用EasyPoi轻松导入导出Excel文档

    提到Excel的导入导出 大家肯定都知道alibaba开源的EasyExcel 该项目的github地址为 https github com alibaba easyexcel 这个项目非常活跃 项目诞生的目的就是为了简化开发 降低内存消耗
  • SCJP认证试题(十一)

    author yaoyuan 10 package com sun scjp 11 public class Geodetics 12 public static final double DIAMETER 12756 32 kilomet
  • 追求极致速度,极简多模态预训练模型ViLT,推理速度比UNITER快60倍!(ICML2021)...

    关注公众号 发现CV技术之美 写在前面 视觉和语言预训练 VLP 提高了各种联合视觉和语言下游任务的表现 然而 当前的VLP方法严重依赖于图像特征提取的过程 其中大部分涉及区域监督 例如 目标检测 和卷积结构 例如 ResNet 他们存在以
  • ubuntu16.04安装CUDA、cuDNN GTX 1660Ti

    在安装之前需要先确定已经安装好与显卡适配的驱动 如果没有的话 下载驱动 https www nvidia cn Download index aspx lang cn 安装 https blog csdn net frothmoon art
  • PCL 计算空间三角形的面积

    目录 一 算法原理 1 空间三角形面积 2 参考文献 二 代码实现 三 结果展示 一 算法原理 1 空间三角形面积 空间三角形面积的计算公式为 A P P S 1 P
  • FreeRTOS韦东山视频前八节学习笔记

    RTOS架构的概念 裸机开发 while 1 WEIFAN LIAOTIAN 多任务并行在while 1 循环 FreeeRTOS while 1 creat task 喂饭 creay task 回信息 start scheduler 让
  • Java课程设计——学生信息管理系统(源码)

    项目简介 该项目可以分为三个模块 登录模块 主页面模块 信息储存模块 本系统完成了基本所需功能 界面清晰 操作简单又实用 基本满足了学校对学生信息的增添 查询 修改和删除等功能 且具有登录系统使该系统具有一定的安全性 大大减少了操作人员和用
  • jstl 格式化时间日期标签讲解

  • 使用Openjdk8和maven时出错:java.security.InvalidAlgorithmParameterException

    错误类型 Maven java lang RuntimeException Unexpected error java security InvalidAlgorithmParameterException the trustAnchors
  • 【PCL】基于法线的差异来分割点云

    基于法线差异来分割点云 1 法向量的计算及可视化 法线又称法向量 因为在三维的点云中 根据一个点的K近邻点或者一个点的radius半径范围内的点拟合一个平面 而垂直这个平面且经过改点的线称之为法向量 法向量是点云点到另一个点的有方向的线段
  • 在django项目里创建子路由

    首先创建一个django项目 然后开始创建子路由 创建django项目 1 在pycharm中创建一个Blog graden的django项目 注意环境要选择正确 2 在Blog graden项目的控制台中创建一个blog app 3 将t
  • BIO、NIO、AIO区别

    一 BIO NIO AIO特点 1 BIO的特点就是每次一个客户端接入 都要在服务端创建一个线程来服务于这个客户端 所以如果有很多个客户端 就会对应成千上万个服务端线程 这会导致服务端负载过高 甚至卡死 2 NIO是同步非阻塞io 客户端和
  • C++ opencv人脸识别框

    需求 视频实时定位人脸位置 并画框 类似效果如下 分析 取视频帧 每一帧其实就类似一张图片 利用opencv的人脸识别模块 检测每一帧并进行划线 处理完成后显示 最后组成就是动态的带人脸识别框的视频 解决方法 下面是每一帧数据的处理方法 加