2013-10-09 5 views
0

Как преобразовать матрицу в видеофайл? В частности, в формате yuv. Или сначала конвертируйте его в .avi, затем отправляйтесь в yuv. У кого есть коды для этого? Первоначально это был файл .avi, и я извлек все кадры в массив или структуру.Преобразование матрицы Matlab в видеофайл

Я нашел это при переполнении стека и использовал его. Я создал 4D-структуру в Matble [height width Y/U/V numberOfFrames]. Я использую qcif, поэтому размер [176 144 3 150], но созданное видео было ошибочным. (все белые) Должен ли я сначала преобразовать его в RGB?

Orig; % 3D matrix 
X = permute(Orig,[1 2 4 3]); % 4D matrix 
movie = immovie(X,map); % map is the colormap you want to use 

implay(movie); 

Кроме того, в моей программе исходный файл YUV был сначала преобразован в avi. Таким образом, моя структура кадров из AVI-файла.

+0

Вы смотрели на это еще: http://www.mathworks.com/help/matlab/ref/videowriterclass.html? – Dan

+0

Да, но это не поддерживается моей версией Matlab. – mc8

+0

Итак, тогда http://www.mathworks.com/help/matlab/ref/avifile.html? – Dan

ответ

2

Я думаю, что это должно быть что-то вроде этого:

aviobj = avifile('example.avi','compression','None'); 

for frame = 1:size(M, 4) 
    aviobj = addframe(aviobj, M(:,:,:,frame); %// This is assuming your image is a vector of RGB images. If it's a vector of indexed images then drop one : and make the loop go to size(M,3) 
end 

aviobj = close(aviobj); 
Смежные вопросы