struct を高速化のため事前割り当てしたい。
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
巧 平山
am 10 Mai 2023
Verschoben: Atsushi Ueno
am 11 Mai 2023
ビデオの読み取りをして表示を行っています。
i=1;
while hasFrame(Movie)
DisplayMov(i) = im2frame(readFrame(Movie)); ←事前割当をしたい
i = i + 1
end
変数サイズがループごとに変更されているため事前割当をしたいのですが,structに任意の数字を行列で入れることはdouble→structが出来ないため出来ません。
他に事前割当を行う方法はないですか
0 Kommentare
Akzeptierte Antwort
Hiroshi Iwamura
am 10 Mai 2023
Verschoben: Atsushi Ueno
am 11 Mai 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 Kommentare
Hiroshi Iwamura
am 10 Mai 2023
Verschoben: Atsushi Ueno
am 11 Mai 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)
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!