Как получить матрицы, представляющие кадры видео в MATLAB? - PullRequest
0 голосов
/ 17 марта 2011

У меня есть avi-видео-файл.Я хотел бы представить кадр из этого видео в виде 3 матриц (поскольку цвета параметризованы 3 числами ([красный, зеленый, синий] или [оттенок, насыщенность, значение] или что-то еще).

Нав тот момент, когда у меня есть этот код:

videoObject = mmreader(fname);
imageData = read(videoObject, [1 5])

Итак, насколько я понимаю, я извлекаю первые 5 кадров из видео. Но я не понимаю, в каком формате дается imageData. Например,как я могу получить зеленый компонент цвета пикселя из третьего кадра, расположенного у номера строки 17 и номера столбца 32 ?

Может кто-нибудь, пожалуйста, помогите мне с этим?

Ответы [ 3 ]

2 голосов
/ 17 марта 2011

Формат для imageData, возвращаемый функцией read, представляет собой 4-D массив , где ваши размеры (в порядке): высота кадра, ширина кадра, глубина изображения (3 для изображений RGB) и количество кадров. Таким образом, чтобы получить зеленый компонент пикселя в строке 17 и столбце 32 третьего кадра, вы просто должны сделать это:

greenValue = imageData(17,32,2,3);

Примечание с одной стороны: mmreader будет удалено в будущем выпуске MATLAB в пользу VideoReader.

2 голосов
/ 17 марта 2011

Насколько я понимаю, это можно сделать следующим образом.Определенный кадр может быть получен следующим образом:

% Take frame number 7:
imageData = read(videoObject, 7);

Теперь, если мы хотим узнать читаемый, зеленый, синий компонент пикселя в столбце 1 и строке 2, нам нужно сделать это:

impixel(imageData,1,2)

Будет возвращено 3 числа (RGB-компонент цвета пикселя).

0 голосов
/ 08 октября 2013
vidObj1 = mmreader('testballroom_0.avi');  %# Create a video file object
nFrames = vidObj1.NumberOfFrames;   %# Get the number of frames
vidHeight1 = vidObj1.Height;         %# Get the image height
vidWidth1 = vidObj1.Width;           %# Get the image width

%# Preallocate the structure array of movie frames:

mov1(1:nFrames) = struct('cdata',zeros(vidHeight1,vidWidth1,3,'uint8'),...
                    'colormap',[]);  %# Note that colormap is empty!

Вы можете получить доступ к кадрам из mov1:)

...