Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >简单的人脸跟踪

简单的人脸跟踪

作者头像
MachineLP
发布于 2018-01-09 07:15:47
发布于 2018-01-09 07:15:47
78100
代码可运行
举报
文章被收录于专栏:小鹏的专栏小鹏的专栏
运行总次数:0
代码可运行

选用的人脸检测器:NPD Face Detector

单人脸的简单跟踪MATLAB代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
close all; clear; clc;
mov = VideoReader('test.mov');
modelFile = 'model_frontal.mat'
load(modelFile, 'npdModel')

%原图中检测到的人脸位置
cddBoxX=0;
cddBoxY=0;
cddBoxW=0;
cddBoxH=0;
%在检测人脸时,为下一次检测产生的候选框。
rectX=0;
rectY=0;
rectW=0;
rectH=0;
%检测到的人脸总数
numFaces=0;
%总的检测时间
timeSum=0;
%总共检测的帧数
frameN=0;

for i=1:mov.NumberOfFrames
    img = read(mov, i);
    img = imresize(img,[640, 480]);
    imgCpy = img;
    if(i~=1 && numFaces>0)
        %候选框的生成
	rectX = cddBoxX*0.6;
	rectY = cddBoxY*0.6;
	rectW = cddBoxW*2.5;
	rectH = cddBoxH*2.5;
	%在原图中抠出候选框
	img = imcrop(imgCpy, [rectX ,rectY ,rectW ,rectH]);
    end

    if(numFaces == 0)
	img = imgCpy;
    end
    
    t1 = clock;
    %人脸检测
    rects = DetectFace(npdModel,img);
    t2 = clock;
    timeDet = etime(t2,t1);
    timeSum = timeSum + timeDet;
    frameN = frameN+1;
    fprintf('detect time is: %f\n', timeDet);
    numFaces = length(rects);
    fprintf('%d faces detected.\n', numFaces);


    %判断是在原图上检测的人脸,还是在候选框中检测的人脸,两者的显示是不同的。
    if numFaces > 0
        border = round(size(img,2) / 300);
        if border < 2, border = 2; end

	%注意这是一个单人脸检测的版本。
	maxBox=0;
	for j=1:numFaces
	    areas = rects[j].width * rects[j].height;
	    if(areas>maxBox)
		index = j;
            end
	end
	cddBoxX = rects(index).col;
	cddBoxY = rects(index).row;
	cddBoxW = rects(index).width;
	cddBoxH = rects(index).height;
	
        imgCpy = DrawRectangle(imgCpy, int16(rectX+cddBoxX), int16(rectY+cddBoxY), cddBoxW , cddBoxH , [0 255 0], border);
        cddBoxX = rectX+cddBoxX;
	cddBoxY = rectY+cddBoxY;
	cddBoxW = cddBoxW;
	cddBoxH = cddBoxH;
    end

    if numFaces > 0
        border = round(size(img,2) / 300);
        if border < 2, border = 2; end

	maxBox=0;
	for j=1:numFaces
	    areas = rects[j].width * rects[j].height;
	    if(areas>maxBox)
		index = j;
            end
	end
	cddBoxX = rects(index).col;
	cddBoxY = rects(index).row;
	cddBoxW = rects(index).width;
	cddBoxH = rects(index).height;
	
        imgCpy = DrawRectangle(imgCpy, cddBoxX, cddBoxY, cddBoxW , cddBoxH , [0 255 0], border);
    end
    imshow(imgCpy)
end

timeAvg = timeSum/frameN;
fprintf('average time: %f.\n', timeAvg);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年09月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
项目实践 | 从零开始边缘部署轻量化人脸检测模型——EAIDK310部署篇
Tengine 由 OPEN AI LAB 主导开发,该项目实现了深度学习神经网络模型在嵌入式设备上的快速、高效部署需求。为实现在众多 AIoT 应用中的跨平台部署,本项目基于原有 Tengine 项目使用 C 语言进行重构,针对嵌入式设备资源有限的特点进行了深度框架裁剪。同时采用了完全分离的前后端设计,有利于 CPU、GPU、NPU 等异构计算单元的快速移植和部署,同时降低评估和迁移成本。
集智书童公众号
2021/07/07
7360
40行代码的人脸识别实践
对于今天要用到的主要工具,还是有必要多说几句的。Dlib是基于现代C++的一个跨平台通用的框架,作者非常勤奋,一直在保持更新。Dlib内容涵盖机器学习、图像处理、数值算法、数据压缩等等,涉猎甚广。更重要的是,Dlib的文档非常完善,例子非常丰富。就像很多库一样,Dlib也提供了Python的接口,安装非常简单,用pip只需要一句即可:
昱良
2019/05/15
6770
40行代码的人脸识别实践
harr特征加级联分类器的目标检测系统1.识别系统架构2.训练方法3.加速方法4.代码实践参考文献
1.识别系统架构 harr_system.png 以上是Harr特征+级联分类器的识别系统架构图,系统分为以下几个部分: 滑动框:固定大小的在原图上滑动的框,用于获取子图 Harr特征提取器:在子图上
月见樽
2018/07/04
7640
基于Face_recognition的人脸检测与识别
Face Location: [(184, 356, 339, 201)] Time for Detecting Face Location: 0.26858190000000093 Time for Marking Face: 0.10674499999999654
裴来凡
2022/05/29
5150
基于Face_recognition的人脸检测与识别
基于 FPGA 及深度学习的人脸检测系统设计
新冠病毒的肆虐让整个 2020 年笼罩在恐慌之中,戴口罩成了人们外出必备 的“新日常”。新冠病毒主要通过飞沫传播和接触传播,正确选择佩戴口罩,可有效阻隔病毒传播。但在人流量庞大的商圈、车站等场所,仍有许多人拒绝佩戴口罩。若能在这些场所进行当前人群口罩检测,则能有效避免冠状病毒的传播。
FPGA技术江湖
2025/02/05
1570
基于 FPGA 及深度学习的人脸检测系统设计
人脸算法系列:MTCNN人脸检测详解
人脸检测是一种在多种应用中使用的计算机技术,可以识别数字图像中的人脸。人脸检测还指人类在视觉场景中定位人脸的过程。
AI算法与图像处理
2020/03/26
2.5K0
人脸算法系列:MTCNN人脸检测详解
40行代码的人脸识别实践
本文讲述如何使用基于深度学习的人脸识别技术实现人员识别。首先介绍了基于深度学习的人脸识别技术的基本原理和常用框架,然后详细描述了如何使用Dlib库进行人脸检测和关键点检测,并结合代码进行了详细说明。最后,通过实际测试例子展示了人脸检测和人脸识别的具体实现过程。
刘潇龙
2017/03/30
6.7K2
40行代码的人脸识别实践
基于 Mtcnn(人脸检测)+Hopenet(姿态检测)+拉普拉斯算子(模糊度检测) 的人脸检测服务
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2023/10/16
5040
基于 Mtcnn(人脸检测)+Hopenet(姿态检测)+拉普拉斯算子(模糊度检测) 的人脸检测服务
MTCNN人脸检测 附完整C++代码
Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Neural Networks
cpuimage
2018/05/07
4.5K8
MTCNN人脸检测 附完整C++代码
OpenCV基于Landmark实现人脸交换
川剧是中国最知名的戏曲剧种之一,变脸是川剧表演的特技之一,在对象传承上有着严格的师门派别。有点扯远啦,回来!其实主要是我们今天要用OpenCV干的事情跟这个有点关系,OpenCV基于Landmark实现人脸关键点提取,对结果善加利用可以实现人脸交换,对特定对象施加变脸术。OpenCV开发者不学川剧也一样可以给各种人变脸,当然前提是会写代码,会做OpenCV。首先简单说一下原理与流程。
OpenCV学堂
2018/07/26
1.3K0
OpenCV基于Landmark实现人脸交换
快乐学AI系列——计算机视觉(3)目标检测
目标检测是计算机视觉领域中的一个重要问题,它旨在识别图像中的特定物体并确定其位置。目标检测在许多应用领域中都有广泛的应用,如智能交通、安全监控、医学影像分析等。
MATRIX.矩阵之芯
2023/03/30
7590
快乐学AI系列——计算机视觉(3)目标检测
非极大值抑制(Non-Maximum Suppression)
本文介绍了非极大值抑制(Non-Maximum Suppression, NMS)在计算机视觉目标检测中的应用,主要讲述了如何通过 Python 和 OpenCV 库实现 NMS 算法。首先介绍了 NMS 的基本概念和作用,然后通过具体的实验过程展示了 NMS 算法的实现过程,最后给出了参考资料和实验结果。
Tyan
2017/12/28
2.1K0
非极大值抑制(Non-Maximum Suppression)
非极大值抑制(Non-Maximum Suppression)
本文介绍了非极大值抑制(Non-Maximum Suppression, NMS)在计算机视觉中的经典应用,以及在不同阈值下的实验结果。非极大值抑制是一种常用的抑制候选框的方法,可以消除重叠的候选框,提高目标检测的准确性。本文还提供了参考资料,可供读者深入了解非极大值抑制和相关算法。
Tyan
2017/12/18
2.2K0
40行代码的人脸识别实践
来源:Python开发 ID:PythonPush 前言 很多人都认为人脸识别是一项非常难以实现的工作,看到名字就害怕,然后心怀忐忑到网上一搜,看到网上N页的教程立马就放弃了。这些人里包括曾经的我自己。其实如果如果你不是非要深究其中的原理,只是要实现这一工作的话,人脸识别也没那么难。今天我们就来看看如何在40行代码以内简单地实现人脸识别。 一点区分 对于大部分人来说,区分人脸检测和人脸识别完全不是问题。但是网上有很多教程有意无意地把人脸检测说成是人脸识别,误导群众,造成一些人认为二者是相同的。其实,人脸检
小小科
2018/05/04
1.1K0
40行代码的人脸识别实践
基于OpenMV的人脸识别,支持人脸注册、人脸检测、人脸识别
https://github.com/1061700625/OpenMV_Face_Recognition
小锋学长生活大爆炸
2020/08/13
15.4K0
基于OpenMV的人脸识别,支持人脸注册、人脸检测、人脸识别
基于 Mtcnn(人脸检测)+Hopenet(姿态检测)+Laplacian(模糊度检测) 的人脸检测服务
「 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》」
山河已无恙
2023/10/22
3250
基于 Mtcnn(人脸检测)+Hopenet(姿态检测)+Laplacian(模糊度检测) 的人脸检测服务
目标检测与分割
对于第二个和第三个任务,可以以某一个很小的方框依次扫描整个图,从每一个采集到的图像中,送到识别器中,看是否是想要的。然后把方框逐渐变大,再从头到尾扫描。
小小杨
2021/10/13
1.6K0
Linux下QT配合OpenCV完成图像处理(实现基本的人脸检测)
OpenCV在ubuntu下的编译方法:https://blog.csdn.net/xiaolong1126626497/article/details/105278882
DS小龙哥
2022/01/12
1.2K0
Linux下QT配合OpenCV完成图像处理(实现基本的人脸检测)
MTCNN详情介绍
MTCNN是一个级联网络,包含了三个网络结构,通过不同的步骤来针对于输出的结果来进行一步又一步的精修。
算法之名
2022/05/06
1.9K0
MTCNN详情介绍
python+opencv 实现图像人脸检测及视频中的人脸检测
人脸检测的常见步骤如下,如果想要将人脸准确地检测出来,需要通过建立人脸模型,获取准确区分人脸的分类器,这里我们使用网上公开的扩展包或已经训练好的分类器。
叶庭云
2020/09/17
13.9K0
python+opencv  实现图像人脸检测及视频中的人脸检测
推荐阅读
相关推荐
项目实践 | 从零开始边缘部署轻量化人脸检测模型——EAIDK310部署篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文