MATLAB批量对一个文件夹里的图片进行人脸检测并将检测到的人脸分割出来若未检测到人脸则跳过,并将分割出来的人脸保存在子文件夹内
时间: 2023-06-09 16:02:30 浏览: 44
您可以使用MATLAB自带的人脸检测函数'vision.CascadeObjectDetector'来对一个文件夹里的图片进行批量的人脸检测。代码如下:
```MATLAB
% 创建人脸检测器
faceDetector = vision.CascadeObjectDetector;
% 图片所在文件夹
imgDir = '图片文件夹路径';
% 检测到的人脸保存子文件夹
faceDir = '保存人脸的子文件夹路径';
% 循环遍历文件夹里的所有图片
imgFiles = dir(fullfile(imgDir, '*.jpg')); % 文件类型可根据需要更改
for i = 1:length(imgFiles)
imgFile = fullfile(imgDir, imgFiles(i).name); % 获取图片文件路径
% 利用人脸检测器检测人脸
img = imread(imgFile);
bbox = step(faceDetector, img);
% 若未检测到人脸则跳过
if ~isempty(bbox)
% 循环遍历每一个检测到的人脸
nFaces = size(bbox, 1);
for j = 1:nFaces
% 分割出人脸并保存到子文件夹
face = imcrop(img, bbox(j, :));
[~, name, ext] = fileparts(imgFiles(i).name);
faceFile = fullfile(faceDir, [name '_face' num2str(j) ext]);
imwrite(face, faceFile);
end
end
end
```
其中,'imgDir'为图片所在的文件夹路径,'faceDir'为保存检测到的人脸的子文件夹路径,代码会将检测到的每个人脸分割出来并保存到子文件夹下,以原始图片名为前缀、加上'_face'和人脸序号作为文件名。