1

이 코드는 얼굴을 감지하고 얼굴을 자르고 데이터베이스 폴더에 저장합니다. 얼굴 이미지 11 및 12는 데이터베이스 폴더에 없습니다. 이유는 무엇입니까?matlab에서 프레임 단위로 비디오를 읽는 중 프레임이 누락 됨

clc; 
clear all; 
%read video file 
obj=vision.VideoFileReader('basu_converted.avi'); 

%read frame by frame 
for k=1:100 

     videoFrame  = step(obj); 

     FaceDetect = vision.CascadeObjectDetector;%using viola jones algorithm 

     BB = step(FaceDetect,videoFrame); 

     figure(1),imshow(videoFrame) 


    for i = 1:size(BB,1) 

     rectangle('Position',BB(i,:),'LineWidth',3,'LineStyle','-','EdgeColor','r'); 

     end 

    %crop and save detected face images 
    for i = 1:size(BB,1) 

    J= imcrop(videoFrame,BB(i,:)); 
    I=rgb2gray(imresize(J,[292,376])); 

    filename = ['G:\matlab_installed\bin\database\' num2str(i+k*(size(BB,1))) '.jpg']; 
    imwrite(I,filename); 

    end 


end 
+0

다른 조언 : matlab 설치 디렉토리 ('G : \ matlab_installed \ bin')에 쓰지 마십시오. 다른 작업 디렉토리를 사용하십시오. – Daniel

답변

1

이미지 인덱싱 오류가 발생했습니다. BB에는 가변 크기가 있으므로 인덱스를 선형화하는 데 사용할 수 없습니다. num2str(i+k*(size(BB,1))) 대신 각 반복 횟수가 증가하는 카운터를 사용합니다.

+0

예. 알았습니다. 카운터로 시도했습니다. – prash2