图像缩略图

检测和跟踪多个面

版本1.1.0.1(2.9 KB)由 迪玛·利辛
从实时视频中检测和跟踪多个人脸。
4.8条
38级

63次下载

更新2016年9月1日

查看许可证

编者按:此文件被选为MATLAB Central推荐商品

这是一个简单的系统,用于从实时视频中检测和跟踪多个人脸。它使用计算机视觉系统工具箱和网络摄像头支持包。该系统使用Viola-Jones算法检测人脸,在每个人脸的边界框内检测最小特征角,并使用Kanade-Lucas-Tomasi(KLT)算法跟踪角点。它每10帧重新检测一次人脸,以金宝app校正跟踪器并补充点。

引用为

Dima Lisin(2020年)。检测和跟踪多个面(//www.tatmou.com/matlabcentral/fileexchange/47105-detect-and-track-multiple-faces),MATLAB中心文件交换。恢复.

评论和评级(74个)

你好。。。如何使用计算机视觉工具箱

徐旺

海,这个函数在没有面的情况下是错误的
检测和跟踪面错误(第58行)
displayFrame=insertObjectAnnotation(framergb,'rectangle'。。。
怎么解决?

亲爱的迪玛·利辛
你是根据哪篇文章来开发这个算法的?
谨致问候,

黄涛

太酷了!

嗨,迪玛..我在运行代码时出现了这些错误;

试图引用非结构数组的字段。

MultiObjectTracker/addDetections错误(第109行)
如果此.PointTracker.isLocked();

MultiObjectTracker2中的错误(第29行)
tracker.addDetections跟踪程序(框架,bboxes);

如何克服这些错误?希望您能尽快回复,谢谢:)

拜托,我需要修改pointTracker.m
我在写pointTracker.m时出错

嗨,我试过在一个视频中进行多人检测,但我在检测时面临的问题是,边界框不是为特定数量的人创建的,而且它还会为相同数量的人一次又一次地创建边界框人们可以请提供循环应该停止的步骤。

类型的输入参数的未定义函数“thingSpeakRead”
“双重”。

主模块3错误(第16行)

当框架中没有面时,它会断裂。

使用InsertObject批注时出错
应为非空标签。

检测和跟踪面错误(第58行)
displayFrame=insertObjectAnnotation(framergb,'rectangle',。。。

保罗

它在线路上出现了一个错误

tracker=MultiObjectTrackerKLT;

徐光明

如果没有物体,它就会破裂。

由纪

嗨,如果我想数一下我在视频中检测到多少张脸,我该怎么办?你能给我一些好主意吗?

嗨,迪玛,请写下运行这个程序要遵循的步骤。。。

阿朱提

你好,
如何使程序在检测人脸之前播放视频?
(因为此代码只在检测到人脸后显示序列)。
知道吗?

如何使用此代码估计位置眼睛的变化?

梁海康

阿朱提

如何输入图像序列?

保罗

亲爱的先生,
类文件(MultiObjectTrackerKLT)可以放在一个matlab目录中,这样脚本就可以在不将两者放在同一个目录中的情况下执行吗?
或者,是否可以在脚本中设置类的路径?
谢谢和问候

干得好,先生。谢谢。

嗨,柴塔尼亚,

您必须安装网络摄像头支持软件包才能正常工作:金宝app
//www.tatmou.com/help/金宝appsupportpkg/usbwebcams/ug/installing-the-webcams-support-package.html

柴坦崖P

未定义函数或变量“webcam”。

检测和跟踪面错误(第10行)
vidObj=网络摄像机;

你能告诉我怎么了吗??
我有计算机科学背景。。

曼迪

你好先生,
谢谢你上传代码。
运行程序后,出现以下错误:
使用时出错matlab.webcam.internal网站.网络摄像头控制器/getCurrentFrame
尝试从网络摄像机获取帧时发生超时。

网络摄像头/快照出错(第227行)
[图像,时间戳]=对象CamController.getCurrentFrame();

面部错误(第16行)
帧=快照(vidObj);

你能帮我调试一下吗。
提前谢谢。

你好,Osumanu,

当然有。必须使用imcrop()修改代码以裁剪每个边界框,并使用imwrite()保存它。

请问有没有办法检测和跟踪面部并将其保存到训练图像的文件夹中

你好,阿伦,

我不明白你的意思。你下载的是一个.zip文件。然后必须从中提取.m文件。在Windows上,您应该可以从Windows资源管理器中执行此操作。在Linux上,可以在命令提示符下使用unzip命令。

或者,只需单击右边指向.m文件的链接,然后将它们逐个保存到本地计算机。

有人能告诉我如何从这个文件中获取代码吗?好像是加密的

朱家刚

非常感谢。它非常有用。

非常有用的工作,非常感谢。。。

你好!非常感谢你提供这个令人惊奇的文件。有没有关于如何进一步训练算法的附加文档或代码?也就是说,我们是否可以交叉验证所有渲染的帧,以查看其中有多少属于同一个面?

yk s公司

陆嘉林

嗨,阿杰,
听起来你可能在运行一个旧版本的MATLAB。此示例需要R2014a或更高版本,还需要计算机视觉系统工具箱。

嗨Mudassar,
听起来包含此示例所需文件的目录不在您的路径上。最简单的方法是将工作目录更改为下载文件的目录。

嗨,米泰什,

要使用网络摄像头,您必须安装网络摄像头支持包,这是一种插件。错误消息应包含一个链接,该链接金宝app将带您转到支持包安装程序。

hii这段代码根本没有在我的系统中运行,显示了一些第100行注释错误我应该怎么做

我在跑步,但有个错误说
“未定义函数或变量‘MultiObjectTrackerKLT’。”
请帮帮我

螨类

我试着跑,但是有点错误>

使用网络摄像头时出错(第13行)
尚未安装网络摄金宝app像头的MATLAB支持包。打开支持包安装程序以安装网络摄像机
金宝app支持包。

我在使用MATLAB 2014a

@卡尼,你只要用vision.VideoFileReader视频文件阅读器一帧一帧地看视频。的step()方法vision.VideoReader视频阅读器将替换对snapshot()的调用。

氨茶碱

喂,有谁能告诉我,我们应该对代码做什么修改,使它在视频上工作,而不是在摄像头上?

曾昌齐

@迪马利辛,本,
我不精通MATLAB,也不知道如何添加关闭摄像机的代码。你能帮忙吗?

@本,酷!谢谢你的小费。

@迪玛·利辛,

我找到了一种方法,使用onCleanup函数来处理这个问题,如下所示:

%%设置清除函数以处理Ctrl-C
fnCleanup=onCleanup(@()cleanup(videoPlayer,videobj));

然后简单地编写这样一个函数:

功能清理(视频播放器、视频对象)
%%清理
如果~ismpty(视频播放器)
释放(视频播放器);
结束;

如果~ismpty(vidObj)
清晰的视频对象;
结束

这在我的Mac上很管用。

嗨,本。谢谢你的尝试!不幸的是,Ctrl-C无法关闭相机。要关闭它,你必须清除vidObj。从R2014b开始,可以使用vision.VideoPlayer视频播放器在播放器窗口关闭时优雅地退出。

一个小问题:按下“Ctrl+C”退出后相机没有关闭。

非常感谢分享!在我的第一次审判中运行得很好。

你好,李。不幸的是,这行不通。代码使用了R2014a的特性vision.PointTracker公司,这是在r2012 b中引入的。因此,通过一些工作,您可以使它在r2012 b或更高版本上运行。

李丹

如何在matlab r2007b版本上运行此代码?

不幸的是,这段代码在2012a中不起作用。通过一些调整,你可以使它在2012b中起作用,也就是vision.PointTracker公司已添加。

嗨,我开始做视频分析了。实际上我无法运行代码。我能在MATLAB 2012a上运行这个代码吗?

@txrxmo,detectAndTrackFaces.m是一个脚本,可以在命令提示符下运行。它使用vision.VideoPlayer视频播放器显示视频。

txrxmo公司

你好。这个系统可以用于一个matlab GUI编辑器吗?或者是命令窗口?

更新

1.1.0.1条

更新的许可证

1.1.0.0条

更新了标题。

MATLAB版本兼容性
用R2014a创建
与任何版本兼容
平台兼容性
窗户 马科斯 Linux系统