Я использую matlab для взаимодействия с научной камерой с использованием mex, и моя программа matlab использует VideoWriter()
для записи файла на диск. Камера имеет RGB-совместимость, и если я пишу файл как таковой, видео в порядке. Однако для текущего приложения мне нужны изображения в оттенках серого, и поэтому я использую rgb2gray()
для его преобразования. К сожалению, когда анализ кода снова попыталась прочитать видеофайл, я получаю ошибку:Matlab считает, что AVI написано поврежденным
Error using VideoReader/init (line 450)
Unable to read the file. The file appears to be corrupt.
и пытаюсь читать видео с VLC подтверждает, что это будет повреждено. Единственное различие в моем коде между их оттенки серого и цветовых вариантов является линия:
frame = rgb2gray(frame);
Моя вся письменность часть кода:
vid = VideoWriter('testVid.avi');
vid.FrameRate = framerate;
vid.Quality = 100;
open(vid);
for i = 1 : frames;
%read frame data into variable 'frame'
frame = rgb2gray(frame);
writeVideo(vid,frame);
end
Я потратил слишком долго бороться с этим, любой идеи?
Спасибо, это работает. Несмотря на то, что он работает без него, если я пишу цветное видео, а не для оттенков серого, я понятия не имею ... – srthompers
При открытии видеофайла создается заголовок с некоторыми значениями по умолчанию. При закрытии этих значений заполняются. Вероятно, эти значения по умолчанию не соответствуют видео в градациях серого, поэтому он терпит неудачу. – Daniel