struct を高速化のため事前割り当てしたい。
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
巧 平山
el 10 de Mayo de 2023
Movida: Atsushi Ueno
el 11 de Mayo de 2023
ビデオの読み取りをして表示を行っています。
i=1;
while hasFrame(Movie)
DisplayMov(i) = im2frame(readFrame(Movie)); ←事前割当をしたい
i = i + 1
end
変数サイズがループごとに変更されているため事前割当をしたいのですが,structに任意の数字を行列で入れることはdouble→structが出来ないため出来ません。
他に事前割当を行う方法はないですか
0 comentarios
Respuesta aceptada
Hiroshi Iwamura
el 10 de Mayo de 2023
Movida: Atsushi Ueno
el 11 de Mayo de 2023
VideoReader オブジェクトを作成すれば簡単にできるかと思います。
videoObject = VideoReader('xylophone.mp4')
videoAll = read(videoObject);
size(videoAll)
startFrame = 100; endFrame = 110;
videoParts = read(videoObject,[startFrame endFrame]);
size(videoParts)
imshow(videoParts(:,:,:,1))
3 comentarios
Hiroshi Iwamura
el 10 de Mayo de 2023
Movida: Atsushi Ueno
el 11 de Mayo de 2023
ビデオは1-3次元目までが固定サイズなので通常の mat になっていれば良いと思ったのですが、movie() とかで再生したいと言うことですかね?
struct の事前割り当ては videoObject.NumFrames を使えばできます。
videoObject = VideoReader('xylophone.mp4');
DisplayMov(videoObject.NumFrames) = struct('cdata',[],'colormap',[])
i=1;
while hasFrame(videoObject)
DisplayMov(i) = im2frame(readFrame(videoObject));
i = i + 1;
end
disp(i-1)
axis off
movie(DisplayMov)
Más respuestas (0)
Ver también
Categorías
Más información sobre スプレッドシート en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!