3D matrix to Video

74 ビュー (過去 30 日間)
Andrew Chen
Andrew Chen 2017 年 2 月 24 日
コメント済み: Guangxu Li 2020 年 5 月 9 日
Hello all, I have been having a lot of trouble trying to export a video from Matlab from a 3D matrix. The matrix dimensions indicate frame height, width and frame number. The element values are what is being used to form images with commands such as imagesc or imshow. I can create a video in Matlab by putting the imshow or imagesc command in a for loop but I want to extract something equivalent from Matlab to put in youtube or imbed in a powerpoint or soemthing. Here's an example of the situation:
IM % an mxnxz matrix
for i = 1:size(IM,3);
imshow(IM(:,:,i))
pause(.001);
end
Since the matrix has no color information after processing I have run into problems using WriteVideo or im2frame command. Thanks for any help.

採用された回答

Stephen23
Stephen23 2017 年 2 月 24 日
編集済み: Stephen23 2017 年 2 月 24 日
It is easy to use getframe and videoWriter object. Here is an example from the videoWriter object help:
v = VideoWriter('peaks.avi');
open(v);
Generate initial data and set axes and figure properties.
Z = peaks;
surf(Z);
axis tight manual
set(gca,'nextplot','replacechildren');
Create a set of frames and write each frame to the file.
for k = 1:20
surf(sin(2*pi*k/20)*Z,Z)
frame = getframe;
writeVideo(v,frame);
end
close(v);
  3 件のコメント
Andrew Chen
Andrew Chen 2017 年 2 月 24 日
I Just saw your edits, I'll give it a try! Thanks!
Andrew Chen
Andrew Chen 2017 年 2 月 24 日
Thanks! It worked!

サインインしてコメントする。

その他の回答 (1 件)

Guangxu Li
Guangxu Li 2020 年 3 月 9 日
編集済み: Guangxu Li 2020 年 5 月 9 日
Video to 3D image (single channel)
filename="./*.avi";
obj = VideoReader(filename);
vid = read(obj);
mImage=obj.Width;
nImage=obj.Height;
frames = obj.NumberOfFrames;
Image3D=zeros(nImage,mImage,frames,'uint8');
for x = 1 : frames
Image3D(:,:,x)=vid(:,:,1,x);
end
niftiwrite(Image3D,filename);
  2 件のコメント
Melika Bahmanabasdi
Melika Bahmanabasdi 2020 年 5 月 6 日
Hi Guangxu Li ,
Thankyou for your answer. I have a question. Why we should use rote90 in Image3D=rot90(Image3D); ?
I can`t understand the reason.
many thanks
Guangxu Li
Guangxu Li 2020 年 5 月 9 日
Dear Bahmanabasdi,
I am very sorry. Please ignore the rotation and flipud lines. That is for my case.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeAudio and Video Data についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by