2014-10-04 4 views
0

나는 텍스트 파일에 매트릭스 [3] [120]을 가지고 있으며, 거기에서 비디오를 생성하고 싶습니다. 어떻게해야합니까?비디오 매트릭스 matlab에서

지금까지 다음을 수행했습니다. 텍스트 파일에서 데이터를 읽고이를 변수에 저장했습니다. 여기에서 매트릭스로 표현 된 비디오를 생성하고 싶습니다. 또는 비디오를 프레임으로 분할 한 다음 프레임을 다시 결합하여 비디오를 다시 가져 오려고하기 때문에 매트릭스를 프레임으로 분할하는 방법이 있습니다. 그런 다음 원래 비디오를 현재 비디오와 비교합니다.

clear all 
clc 
filename='filename.txt'; 
delimiterIn=' '; 
K=importdata(filename,delimiterIn); 

여기에서 어떻게 진행합니까?

답변

0

만들려는 영화에 대한 충분한 정보를 제공하지 않았습니다. 동영상을 만드는 절차는 page에 강조 표시되어 있습니다. 핵심은 루프 내에서 getframe을 호출하여 동영상을 생성하는 것입니다. 귀하의 작업에 matlab의 예제를 수정합니다 :

clear all 
    clc 
    filename='filename.txt'; 
    delimiterIn=' '; 
    K=importdata(filename,delimiterIn); 
    % K =load(filename) may also work 
    nFrames = 20; 

    % Preallocate movie structure. 
    mov(1:nFrames) = struct('cdata', [],... 
        'colormap', []); 

    % Create movie. 
    plot(K(:,1), K(:,2)); % assumes you are plotting the first two colums 
    axis tight manual 
    set(gca,'nextplot','replacechildren'); 
    for k = 1:nFrames 
     plot(K(:,1), K(:,2)); % assumes you are plotting the first two columns 
           % the data must somehow change inside this loop 
     mov(k) = getframe(gcf); 
    end 

    % Create AVI file. 
    movie2avi(mov, 'mydata.avi', 'compression', 'None'); 

또 다른 인터페이스는 최신 버전의 matlab에있는 비디오 라이저 인터페이스입니다. 설명은 here입니다. 위의 절차보다 권장됩니다. 거기에있는 제안을 따르십시오. 이 페이지는 따라하기 쉽습니다.

clear all 
    clc 
    filename='filename.txt'; 
    delimiterIn=' '; 
    K=importdata(filename,delimiterIn); 
    % K =load(filename) may also work 


    %Prepare the new file. 

    writerObj = VideoWriter('movie.avi'); 
    open(writerObj); 
    % Create movie. 
    plot(K(:,1), K(:,2)); % assumes you are plotting the first two colums 
    axis tight manual 

    set(gca,'nextplot','replacechildren'); 
    set(gcf,'Renderer','zbuffer'); % optional I think 

    for k = 1:nFrames 
     plot(K(:,1), K(:,2)); % assumes you are plotting the first two columns 
           % the data must somehow change inside this loop 
     frame = getframe(gcf); 
     writeVideo(writerObj,frame); 
    end 
    close(writerObj); 
+0

귀하의 방법을 시도하겠습니다. thanks – lil

+0

은 상기 방법을 시도했다. 그러나 .avi 파일을 재생할 때 그 그래프 만 만들었습니다. 비디오가 아닙니다. 어떤 도움이 필요합니다. – lil

+0

제가 주석을 달았 기 때문에 매트릭스 K 열 1과 2는 프레임마다 바뀌어야합니다. 영화를 만들기 위해서는 매 프레임마다 데이터가 바뀌어야하기 때문입니다. 데이터가 프레임마다 변경됩니까? – Jagte