VideoReader правильно читает файл .MOV, но не может читать отдельные кадры в MATLAB - PullRequest
0 голосов
/ 05 апреля 2019

Я упростил код, который я написал, пожалуйста, посмотрите на него ниже.

try
    video = VideoReader('IMG_6174.MOV');
catch
    video = false;
end

if video ~= false
    totalFrames = video.duration * video.framerate;
end

vidStruct = struct('cdata', zeros(300, 300, 3, 'uint8'), 'colormap', []);

for frameNumber = 1:totalFrames
   try
       vidStruct(frameNumber).cdata = readFrame(vidObj);
   catch
       disp(strcat('Frame missed. Number:', int2str(frameNumber)));
   end
end

То, что я пытаюсь сделать, просто.Я просто хочу прочитать видеофайл, и если я могу его прочитать, я хочу поместить каждый кадр этого видеофайла в структуру.Если в одном из кадров будет ошибка, будет отображаться сообщение об ошибке, как вы можете видеть в коде.

Этот код выше дает мне такой вывод: (Я сократил его, чтобы сохранить пространство, но этоодно и то же сообщение для всех кадров)

Frame missed. Number:1
Frame missed. Number:2
Frame missed. Number:3
.
.
.
Frame missed. Number:71
Frame missed. Number:72
Frame missed. Number:73

Кроме того, версия цикла while с

while hasFrame(video)
    ....
end 

также не работает, поскольку hasFrame возвращает 0. Я проверил данные видеопеременная и совпадает с информацией из фактического видеофайла.Я использую MATLAB r2015b.Кроме того, все работает нормально с VLC Media Player.

Любая помощь приветствуется.Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...