How to make a Video from 3D array

35 visualizzazioni (ultimi 30 giorni)
Hamed Bolandi
Hamed Bolandi il 22 Lug 2021
Commentato: Hamed Bolandi il 23 Lug 2021
I have 3D matrix with dimension of 600x600x28 which the last index is number of frames and want to convert it to video file. I tried as a below but raised with error:
Unrecognized function or variable 'cmap'.
My code:
Orig = rand(600,600,28);
X = permute(Orig,[1 2 4 3]); % 4D matrix
movie = immovie(X,cmap);
implay(movie);

Risposte (1)

millercommamatt
millercommamatt il 22 Lug 2021
You never defined the variable cmap which is supposed to be a color map.
Try This:
Orig = rand(600,600,28);
camp=parula;
X = permute(Orig,[1 2 4 3]); % 4D matrix
movie = immovie(X,cmap);
implay(movie);
  3 Commenti
millercommamatt
millercommamatt il 23 Lug 2021
I get the same error and I don't know why. The documentation for immovie says that double is an allowable input data type.
But, I have a fix: Do the conversion of the input array to uint8 yourself.
Orig = randi(256,600,600,28)-1; % 0-255
cmap=parula;
X = permute(Orig,[1 2 4 3]); % 4D matrix
movie = immovie(uint8(X),cmap);
implay(movie);
Hamed Bolandi
Hamed Bolandi il 23 Lug 2021
The reason I was getting this error is because the function call immovie(X,map) requires X to be an indexed image. It means that the values of X must greater than 1. Therefore, changing the code like below solved the issue:
Orig = randi([1 255],600,600,1,28);
cmap=parula;
movie = immovie(Orig,cmap);
implay(movie);

Accedi per commentare.

Categorie

Scopri di più su View and Analyze Simulation Results in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by