リアルタ@ @ムのカメラで目と口を検出する

7次浏览(过去30天)
tsuyoshi tsunoda
tsuyoshi tsunoda 2021年7月5日
评论道: tsuyoshi tsunoda2021年7月11日
リアルタイムのカメラで目と口の同時検出をしようとしているのですが,どのようなコードで進めればいいか教えていただきたいです。
現状のコ,ドは,目のみは検出することができます
创建人脸检测器对象。
eyeDetector =愿景。CascadeObjectDetector (“EyePairBig”);
创建点跟踪对象。
pointTracker =视觉。PointTracker (“MaxBidirectionalError”2);
创建webcam对象。
CAM =网络摄像头();
捕获一帧以获取其大小。
视频帧=快照(凸轮);
frameSize = size(视频帧);
创建视频播放器对象。
videoPlayer =视觉。放像机(“位置”, [100 100 [frameSize(2), frameSize(1)]+30]);
runLoop = true;
numPts = 0;
frameCount = 0;
runLoop && frameCount < 400
获取下一帧。
视频帧=快照(凸轮);
videoFrameGray = rgb2gray(videoFrame);
frameCount = frameCount + 1;
如果numPts < 10
检测模式。
bboxeye = eyeDetector.step(videoFrameGray);
如果~ isempty (bboxeye)
在检测区域内找到角点。
点= detectMinEigenFeatures(videoFrameGray,“投资回报”, bboxeye(1,:));
重新初始化点跟踪器。
xyPoints = points.Location;
numPts = size(xyPoints,1);
释放(pointTracker);
初始化(pointTracker, xyPoints, videoFrameGray);
保存分数的副本。
oldPoints = xyPoints;
将表示为[x, y, w, h]的矩形转换为an
% m × 2矩阵的[x,y]坐标的四个角。这
%需要能够将包围框转换为显示
脸的朝向。
bboxPoints = bbox2points(bboxeye(1,:));
将方框角转换为[x1 y1 x2 y2 x3 y3 x4 y4]
insertShape所需的%格式。
bboxPolygon =重塑(bboxPoints', 1, []);
在检测到的人脸周围显示一个包围框。
视频框架=插入形状(视频框架,“多边形”bboxPolygon,“线宽”3);
显示检测到的角。
视频帧= insertMarker(视频帧,xyPoints,“+”“颜色”“白色”);
结束
其他的
跟踪模式。
[xyPoints, isFound] = step(pointTracker, videoFrameGray);
visiblePoints = xyPoints(isFound,:);
oldInliers = oldPoints(isFound,:);
numPts = size(visiblePoints, 1);
如果numPts >= 10
估计旧点之间的几何变换
%和新的点。
[xform, inlierIdx] = estimateGeometricTransform2D(...
oldInliers visiblePoints,“相似”“MaxDistance”4);
oldInliers = oldInliers(inlierIdx,:);
visiblePoints = visiblePoints(inlierIdx,:);
对包围框应用变换。
bboxPoints = transformPointsForward(xform, bboxPoints);
将方框角转换为[x1 y1 x2 y2 x3 y3 x4 y4]
insertShape所需的%格式。
bboxPolygon =重塑(bboxPoints', 1, []);
在被跟踪的脸部周围显示一个包围框。
视频框架=插入形状(视频框架,“多边形”bboxPolygon,“线宽”3);
显示跟踪点。
视频帧= insertMarker(视频帧,visiblePoints,“+”“颜色”“白色”);
重置分数。
oldPoints = visiblePoints;
选点(pointTracker oldPoints);
结束
结束
使用视频播放器对象显示带注释的视频帧。
步骤(放像机、videoFrame);
检查视频播放器窗口是否关闭。%
runLoop = isOpen(videoPlayer);
结束
打扫卫生。
清晰的凸轮
释放(放像机);
释放(pointTracker);
释放(eyeDetector);

接受的答案

健
2021年7月10日
编辑: 2021年7月10日
こらは,目の检测器のみ用意されているのですね。
こちらをみると,他の部位を検出することもできそうですので,まずはこのファイルを試してみて,それをWEBカメラにあうように改良されてはいかがでしょうか。
3评论
tsuyoshi tsunoda
tsuyoshi tsunoda 2021年7月11日
色々と教えてくださりありがとうございます。

登录评论。

更多答案(0)

标签

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!