我需要在使用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)
答案 0 :(得分:1)
如果您可以访问创建影片的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
如果您向代码展示如何制作电影,则可以获得更好的答案。
修改强>:
我简化了你的答案中的代码。例如,您不需要循环来填充3D数组。而且您不需要在循环中重复表面功能。只需更改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)