2016-01-02 2 views
0

Я создал два avi. и они имеют одинаковую длину. Я хотел совместить их на одном и том же фоне, а другой сверху. Код, который я использовал для одной из анимаций, приведен ниже, другой - аналогичный. Есть ли способ, которым я могу это сделать?MATLAB объединить два avi. вместе

load Results.mat; 
I = imread('hex08.jpg'); 
[rows,columns,numberOfColorChannels] = size(I); 
if numberOfColorChannels >1 
    I = I(:,:,2); 
end 
background = imresize(background, [rows,columns]); 


figure(1); 
hold on; 
for i=1:500 
    A=angle(i,:); 

    J = imrotate(I,A,'crop'); 
    mask = J == 0; 
    mask = bwareafilt(mask,4); 
    J(mask) = background(mask); 
    pause(0.01) 
    imshow(J); 
    imwrite(J,[num2str(i),'.png']); 

end 


imageNames = dir(fullfile('*.png')); 
imageNames = {imageNames.name}'; 

outputVideo = VideoWriter(fullfile('hex08.avi')); 
outputVideo.FrameRate = 15; 
open(outputVideo) 

for ii = 1:length(imageNames) 
    img = imread(fullfile(imageNames{ii})); 
    writeVideo(outputVideo,img) 
end 

close(outputVideo) 

ответ

1

Вот один из способов это можно сделать: Так же, как вы читаете изображение в img, вы можете прочитать второе изображение (из второго видео) в img2. Затем вы можете создать комбинированное изображение двух: imgCombined = [img ; img2];, которое будет содержать первое изображение сверху, а второе внизу (это будет работать, если оба изображения имеют одинаковую ширину, в противном случае вам нужно будет изменить размер/обрезку). Когда вы пишете файл видео, используйте writeVideo(outputVideo,imgCombined).

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