How to when I getdata from Video processing gets increasingly slow in GUI
    3 views (last 30 days)
  
       Show older comments
    
if true
  Table = zeros(1,17);
test = readtable ('datatrain.csv');
xdata = test(1:end,[12  13]);
train = table2array(xdata);
group1 = test(1:end,17);
group = table2array(group1);
%  svmStruct = svmtrain(train,group,'kernel_function','rbf','ShowPlot',true);
svmStruct = svmtrain(train,group,'ShowPlot',false);
vid = webcam;
% preview(vid);
set(vid,'TriggerRepeat',Inf);
set(vid,'ReturnedColorSpace','grayscale');
vid.FrameGrabInterval = 3;
% Set value of a video source object property. 
vid_src = getselectedsource(vid);
set(vid_src,'Tag','motion detection setup');
disp(sprintf(' FRAMING START from VIDEO'));
start(vid);
data2 = getdata(vid,1);
count = 0;
while(vid.FramesAcquired<=300)% Stop after 100 frames    
       data = getdata(vid,2); 
%      diff_im = imsubtract(data(:,:,:,1),data(:,:,:,2));
%      diff_im = imsubtract(data2,data(:,:,:,1));
     diff_im = abs((data2) - (data(:,:,:,1)));
      for i=1:720
        for j=1:1280
                if(diff_im(i,j) <25)
                    diff_im(i,j)=diff_im(i,j)+0;
                else
                    diff_im(i,j)=diff_im(i,j) + 255;
                end   
        end
      end
     diff_im = imbinarize(diff_im,0.09);
%          if sum(diff_im(:)>0) 
             diff_open =  imfill(diff_im,'holes');
             diff_open = bwareaopen(diff_open,25000,8);
             diff_open = bwareaopen(diff_open,25000,8);
             if sum(diff_open(:)==1)>10000
%        imshow(diff_open);
%        drawnow ;
      [BWAREA,PERI,cen,Dispersion,height,width,aspect,upperRatio,lowerRatio,Ratio,theta] = AREAPICTURE (diff_open) ; 
      diff_im2 = imsubtract (data2,data(:,:,:,2));
      diff_im2 = imbinarize(diff_im2,0.09);
        [BWAREA2,PERI2,cen2,Dispersion2,height2,width2,aspect2,upperRatio2,lowerRatio2,Ratio2,theta2] = AREAPICTURE (diff_im2) ;
       if (count == 0)  
           Angle = theta ;  
           Velocity = 0;
       end
       if (count == 1)  && (theta <=70)
           Angle = theta ; 
       end
       Velocity = abs (Angle - theta);
    Table(1,1)= BWAREA;
    Table(1,2) = PERI;
    Table(1,3) = cen(1,1);
    Table(1,4) = cen(1,2);
    Table(1,5)= Dispersion;
    Table(1,6) = height;
    Table(1,7) = width;
    Table(1,8)= aspect;
    Table(1,9) = upperRatio;
    Table(1,10) = lowerRatio;
    Table(1,11) = Ratio;
    Table(1,12)= theta;
    Table(1,13)= Velocity;
fid = fopen('datarealtime.csv','wt'); dlmwrite('datarealtime.csv', Table,'delimiter',',','-append'); fclose(fid); normaldata ('datarealtime.csv'); svm ('normaltorealtime.csv',svmStruct);
 Angle=theta;
count=count+1;
% 
             end
%             end
end stop(vid); delete(vid); clear vid; end
0 Comments
Answers (0)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!