8 мая 2017 г.

Найти лицо на фото, обрезать и сохранить Matlab код / How to crop a detected face and save them Matlab code example

Многие в сети ищут исходный код для автоматизированного создания выборок для последующего обучения классификаторов на этих обучающих выборках. 
Прилагаю рабочий код матлаба, который позволит Вам найти лицо на фото, выделить его и, затем, сохранить его в нужной для вас папке в нужном разрешении. Если возникли вопросы- пишите к комментариях.

English: Guys, if you searching for 

  • How to crop a detected face and face parts and save them; 
  • save the detected faces from image in a single folder in jpg format; 
  • how to save multiple cropped images in a folder; 
  • how i can crop faces from image and save them in sub images
Then this matlab code sample just for you!


clc;
close all;
for k=1:1000 %обрабатываются фотографии с 1-ой по 1000-ю
basepath1='C:/PROJECT/face/%d.jpg'; %место, откуда вы загружаете фото

path = sprintf (basepath1,k);

a=imread (path);
disp(size(a));
A=imresize(a,[740 432]); %сжимаем оригинал картинки,если он большой. В моем случае размер оригинала был 1270x720. Для облегчения обработки пришлось "ужать" до 720x432

FaceDetector = vision.CascadeObjectDetector();
BBOX = step (FaceDetector,A);
B=insertObjectAnnotation(A,'rectangle',BBOX,'Face');
%imshow(B), title('Face'); %форма для вывода на экран (если необходимо)
n=size(BBOX,1);
str_n=num2str(n);
str=strcat('detected face=',str_n);
disp(str);

for i=1:n
faceImage = imcrop (A,BBOX(1,:));
J = imresize(faceImage,[256 256]); %сжимаем размер картинки до 256x256
%figure; imshow(J); %форма для вывода на экран (если необходимо)
basepath = 'C:/PROJECT/face1/%d.jpg'; %место, куда сохраняются обрезанные фото
path= sprintf(basepath,k);
imwrite (J, path);
end
end

Комментариев нет:

Отправить комментарий