如何作物并保存检测脸从视频?我已经检测到的脸从视频。

5视图(30天)
%创建一个级联探测器对象。
faceDetector = vision.CascadeObjectDetector ();
%读一个视频帧并运行探测器。
videoFileReader = vision.VideoFileReader (“visionface.avi”);
videoFrame =步骤(videoFileReader);
bbox =步骤(faceDetector videoFrame);
%画出周围的边界框返回检测到的脸。
boxInserter = vision.ShapeInserter (“BorderColor”,“自定义”,
“CustomBorderColor”,(255 255 0));
videoOut =步骤(boxInserter videoFrame bbox);
图,imshow (videoOut)、标题(“发现脸”);
%的肤色信息提取视频帧的色调
%转换为HSV颜色空间。
[hueChannel, ~, ~] = rgb2hsv (videoFrame);
%显示颜色通道数据,画脸周围的边界框。
图,imshow (hueChannel)、标题(“色彩通道数据”);
矩形(“位置”bbox (1:)“线宽”2,“EdgeColor”(1 1 0))
%检测区域内面对鼻子。鼻子提供更准确
%的肤色,因为它不包含任何背景
%像素。
noseDetector = vision.CascadeObjectDetector (“鼻子”);
faceImage = imcrop (videoFrame bbox);
noseBBox =步骤(noseDetector faceImage);
%的鼻子边界框定义相对于裁剪面形象。
%调整鼻子边界框,以便它是相对于原始视频
%框架。
noseBBox (1:2) = noseBBox (1:2) + bbox (1:2);
%创建一个跟踪器对象。
追踪= vision.HistogramBasedTracker;
%初始化跟踪器使用色调直方图通道的像素
%的鼻子。
initializeObject(跟踪、hueChannel noseBBox);
%显示视频帧创建一个视频播放器对象。
videoInfo = info (videoFileReader);
放像机= vision.VideoPlayer (“位置”,100 100 videoInfo.VideoSize + 30);
%跟踪面临多个连续的视频帧到视频结束。
~结束(videoFileReader)
%提取下一个视频帧
videoFrame =步骤(videoFileReader);
% RGB - > HSV
[hueChannel, ~, ~] = rgb2hsv (videoFrame);
%跟踪使用颜色通道数据
bbox =步骤(跟踪、hueChannel);
%插入一个边界框的对象被跟踪
videoOut =步骤(boxInserter videoFrame bbox);
%显示注释视频帧使用视频播放器对象
步骤(放像机、videoOut);
结束
%释放资源
释放(videoFileReader);
释放(放像机);
1评论
阿拉巴马州哈布
阿拉巴马州哈布 2021年10月30日
videoOut =步骤(boxInserter videoFrame bbox);
bbox应该被转换成整数= >
videoOut =步骤(boxInserter videoFrame, int32 (bbox) );

登录置评。

答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!