4

在执行 2 倍合并后,我正在尝试使用“电影”功能显示来自外部摄像头的实时视频。我的原始视频尺寸是 768x576。但是,当我对像素进行分类时,我会得到一个 384x288 的图像,当它显示时,它看起来是原始视频大小的一半。有什么办法可以增加电影的显示大小,使其看起来与原始大小相同?换句话说,我的像素看起来会是两倍大小。

我试过使用set(gca,'Position'...),但它不会改变我电影的大小。

有什么建议吗?

4

1 回答 1

2

我将使用文档中的示例电影。

假设你有一堆帧:

figure('Renderer','zbuffer')
Z = peaks;
surf(Z); 
axis tight
set(gca,'NextPlot','replaceChildren');
% Preallocate the struct array for the struct returned by getframe
F(20) = struct('cdata',[],'colormap',[]);
% Record the movie
for j = 1:20 
    surf(.01+sin(2*pi*j/20)*Z,Z)
    F(j) = getframe;
end

在结尾处help movie,它说:

MOVIE(H,M,N,FPS,LOC) 指定播放电影的位置,相对于对象 H 的左下角,以像素为单位,无论对象的 Units 属性值如何。LOC = [XY 未使用 未使用]。LOC 是一个 4 元素位置向量,仅使用其中的 X 和 Y 坐标(电影播放时使用其记录的宽度和高度)。

因此,无法以比录制时更大的尺寸显示电影。您必须放大像素以使其以更大的尺寸显示:

% blow up the pixels
newCdata = cellfun(@(x) x(...
    repmat(1:size(x,1),N,1), ...         % like kron, but then
    repmat(1:size(x,2), N,1), :), ...    % a bit faster, and suited 
    {F.cdata}, 'UniformOutput', false);  % for 3D arrays

% assign all new data back to the movie
[F.cdata] = newCdata{:};

% and play the resized movie
movie(F,10)

请注意,这不会因可读性而赢得任何奖励,因此如果您要使用它,请附上描述它的作用的评论。

于 2012-10-29T13:16:51.193 回答