在matlab中逐帧读取视频时帧丢失

时间:2014-04-27 09:32:19

标签: matlab image-processing computer-vision video-processing matlab-cvst

此代码检测面部并裁剪面部并将其存储在数据库文件夹中。数据库文件夹中缺少面部图像11和12。是什么原因?

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

1 个答案:

答案 0 :(得分:1)

我注意到您对图像编制索引的错误。 BB具有可变大小,因此您无法使用它来对索引进行线性化。而不是num2str(i+k*(size(BB,1)))我将使用一个每次迭代递增的计数器。