4

2倍のビニングを実行した後、「ムービー」機能を使用して外部カメラからのライブビデオを表示しようとしています。私の元のビデオサイズは768x576です。ただし、ピクセルをビニングすると、元のビデオの半分のサイズに見える384x288の画像が表示されます。映画の表示サイズを元のサイズと同じになるように拡大する方法はありますか?言い換えれば、私のピクセルは2倍のサイズに見えます。

使ってみ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)は、オブジェクトのUnitsプロパティの値に関係なく、オブジェクトHの左下隅を基準にして、ピクセル単位でムービーを再生する場所を指定します。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 に答える