У меня проблема при создании avi-файла с помощью Matlab. Моя цель - использовать граничный фильтр для всего видео и сохранить файл в формате avi. Фильтр работает нормально, моя проблема - запись файла avi.
Мой код:
vidFile = VideoReader('video.avi');
edgeMov = avifile('edges','fps',30);
for i = 1:vidFile.numberofframes
frameI = read(vidFile,i);
frameIgray = rgb2gray(frameI);
edgeI = edge(frameIgray,'canny',0.6);
edgeIuint8 = im2uint8(edgeI);
edgeIuint8(:,:,2) = edgeIuint8(:,:,1);
edgeIuint8(:,:,3) = edgeIuint8(:,:,1);
edgeMov = addframe(edgeMov,edgeIuint8);
end
edgeMov = close(edgeMov)
Когда цикл заканчивается и avifile закрывается, я иду воспроизвести видео, и оно говорит: «Проигрыватель Windows Media обнаружил проблему при воспроизведении этого файла». Я также безуспешно пытался использовать Media Player Classic и VLC, что привело меня к мысли, что проблема заключается в самом файле. С помощью GSpot я проверил файл, и он сказал, что заголовок AVI поврежден.
Повторная попытка цикла вернула точно такую же проблему. Меня смущает то, что когда я запускаю цикл для меньшего числа кадров, например 30, видео записывается нормально, и я могу его смотреть. Размер видео, которое я пытаюсь преобразовать, превышает 1000 кадров, поэтому я не знаю, является ли размер проблемой?
Любая помощь будет принята с благодарностью, спасибо.