Как я могу поместить фоновое изображение в фильме в Matlab - PullRequest
0 голосов
/ 03 июня 2010

Мне нужно поместить фоновое изображение в фильм, созданный с помощью MATLAB?


Я разместил ниже пример кода, как я генерирую фильм в Matlab. Мне нужно добавить фоновое изображение для этого фильма. Спасибо за вашу помощь.

for i=1:128
    for j=1:128
        p(i,j,:)=randn(1,200);
    end
end
[u,v,w]=size(p);

frm_r=1:128;  
frm_c=1:128;

figure; j=1;
for t=1:w  
    surface(frm_c,frm_r,p(:,:,t),'EdgeColor','none');
    pause(0.1)
    colorbar;
    F(j) = getframe;
    j=j+1;
end
movie(F,1,50) 

1 Ответ

1 голос
/ 04 июня 2010

Если у вас есть доступ к коду MATLAB, который создает фильм, вы можете поместить оси с IMAGE или IMSHOW в качестве фона и сделать оси поверх них прозрачными.

Вот простой пример:

im = image; % create image object (default pic)
imax = get(im,'parent'); % get image axes handle
axis ij
set(imax,'position',[0 0 1 1]) % make it to fill the whole figure

ax = axes; % new axes
h = plot(ax,rand(100),'ro'); % initial plot
for i=1:20
    set(h,'ydata',rand(100,1)); % change the data in a loop
    pause(0.1)
end

Вы можете получить лучший ответ, если покажете свой код, как вы создаете фильм.

EDIT

Я немного упростил код в вашем ответе. Например, вам не нужны циклы для заполнения трехмерного массива. И вам не нужно повторять поверхностную функцию в цикле. Просто измените свойство zdata.

Попробуйте этот код (замените yourimage.jpg реальным именем файла):

p = randn(128,128,200);
[u,v,w]=size(p);
frm_r=1:128;
frm_c=1:128;

figure; 
im = imshow('yourimage.jpg'); % create and display image object from a file
imax = get(im,'parent'); % get image axes handle
set(imax,'position',[0 0 1 1]) % make it to fill the whole figure

ax = axes('color','none'); % new axes
hsurf = surface(frm_c,frm_r,p(:,:,1),'EdgeColor','none','Parent',ax); 
colorbar; 
xlim([1 u])
ylim([1 v])

j=1; 
for t=1:w
    set(hsurf,'zdata',p(:,:,t))
    F(j) = getframe; 
    j=j+1; 
end
movie(F,1,50)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...