2015-12-28 2 views
0

Я хочу сохранить данные качки, рыскания и рулона в файле excel для всех кадров. Например: если у меня есть 200 кадров, я хочу сохранить 200 кадров в файле excel. Я пробовал, но мой код хранит только данные кадра. exceldataКак сохранить данные в файле excel MATLAB?

fitting_model='models/Chehra_f1.0.mat'; 
load(fitting_model);  
mov=VideoReader('7_a.avi'); %Read video file and create an object 
c=mov.NumberOfFrames; 
for k=1:c 
    a = read(mov, k); 
    img=im2double(a);   
    disp(['Detecting Face in ']); 
    faceDetector = vision.CascadeObjectDetector(); % detect face in an image 
    bbox = step(faceDetector, img);    %create boundary box around face 
    test_init_shape = InitShape(bbox,refShape); %initialize facial points in variable 
    test_init_shape = reshape(test_init_shape,49,2); 
    if size(img,3) == 3 
     test_input_image = im2double(rgb2gray(img)); 
    else 
     test_input_image = im2double((img)); 
    end 
    disp(['Fitting']);  
    MaxIter=6; 
    test_points = Fitting(test_input_image,test_init_shape,RegMat,MaxIter); 
load('3D_Shape_Model.mat'); 
n=49; 
    test_image=img; 
    imshow(test_image);hold on; 
     % % Compute 3D Head Pose 
    if(n==49) 
     test_shape=test_points; 
     [pitch,yaw,roll] = ComputePose(PDM_49,test_shape(:)); 
      filename='framesdata.xlsx'; 
     header = {'Pitch', 'yaw ','roll'}; 
     new_data = num2cell([pitch(:), yaw(:), roll(:)]); 
     output = [header; new_data]; 
     xlswrite(filename,output); 
    end  
    plot(test_shape(:,1),test_shape(:,2),'b*'); 
    title([num2str(i),' : Pitch = ',num2str(pitch),' ; Yaw = ',num2str(yaw),' ; Roll = ',num2str(roll)]); 
    set(gcf,'units','normalized','outerposition',[0 0 1 1]); 
    pause(0.5); 
    close all; 
end 
+0

Каковы размеры 'output'? – Dan

+0

В текущей ситуации рабочее пространство отображает 2x3 ячейку в качестве выходного размера. – usman

+0

Итак, где же 144 кадра входят в нее? – Dan

ответ

0

Как @excaza заявил, что вам нужно будет переместить xlswrite команду из вашего цикла или указать ячейки вы пишете. Для получения дополнительной информации см. xlswrite Doc. Правильный синтаксис будет:

xlswrite(filename,A,xlRange) 

Ниже приведен пример они обеспечивают:

filename = 'testdata.xlsx'; 
A = {'Time','Temperature'; 12,98; 13,99; 14,97}; 
sheet = 2; 
xlRange = 'E1'; 
xlswrite(filename,A,sheet,xlRange) 

Вам просто нужно предоставить xlswrite адрес, чтобы начать запись данных.

Смежные вопросы