을 사용하여 비디오에서 얼굴을 감지하는 것이 매우 빠릅니다. 내 코드에서 얼굴 감지 용 matlab 코드를 작성했습니다. 첫 번째 100 프레임의 얼굴을 감지하고 각 프레임에서 얼굴을 자르고 데이터베이스 폴더에 저장합니다. 문제 iam facingvision.CascadeObjectDetector in matlab의
프레임별로 프레임을 감지하는 속도가 매우 느립니다. 4000 프레임에서 작업해야하므로 더 빨리 실행할 수있는 아이디어가 있습니까?
2. 내 데이터베이스 폴더에는 1 ~ 100 개의 얼굴 이미지가 표시되어야하지만 11 번째 및 12 번째 얼굴 이미지가 직접 표시되어 있지 않습니다. 10 번째 이미지 다음에 13 번째 이미지가 표시됩니다 .23 번째 얼굴 이미지가 blurr.Likewise 너무 많습니다. 누락 및 일부가 blurr.Last 이미지 번호는 216.But으로 총 106 얼굴 이미지가 데이터베이스 폴더에 있습니다. 그 12 이미지가 blurr.Remaining은 올바른 이미지입니다.
clc;
clear all;
obj=vision.VideoFileReader('basu.avi');
for k=0:99
videoFrame = step(obj);
%using viola-jones algorithm
FaceDetect = vision.CascadeObjectDetector;
%FaceDetect
BB = step(FaceDetect,videoFrame);
%BB
figure(2),imshow(videoFrame);
for i = 1:size(BB,1)
rectangle('Position',BB(i,:),'LineWidth',3,'LineStyle','-','EdgeColor','r');
end
%crop faces and convert it to gray
for i = 1:size(BB,1)
J= imcrop(videoFrame,BB(i,:));
I=rgb2gray(imresize(J,[292,376]));
%save cropped faces in database folder
filename = ['G:\matlab_installed\bin\database\' num2str(i+k*(size(BB,1))) '.jpg'];
imwrite(I,filename);
end
end
'FaceDetect = vision.CascadeObjectDetector;'를 루프 밖에서 움직이면 약간 속도가 빨라질 수 있습니다. –
For 루프는 프레임 수만큼 실행됩니다. 루프 외부에서 수행 할 수있는 방법. 비디오는 프레임 모음을 의미합니다. – prash2
물론입니다. 내 제안을 잘못 이해 했으니 다시 읽어주십시오. 매번 얼굴 검출 개체를 만드는 것을 피하기 위해 ** 회선 밖에 ** ** 한 줄만 이동하도록 제안했습니다 (한 번만 만들어야 각 프레임에 사용할 수 있습니다). –