convert frames into video. Previous code i took frames from video, edited them and now i want to put them back. I got code from previous answer but it isnt working. Thanks
4 次查看(过去 30 天)
显示 更早的评论
% Make an avi movie from a collection of PNG images in a folder.
% Specify the folder.
myFolder = 'C:\Users\bende\Documents\MATLAB\ppframes';
% Get a directory listing.
filePattern = fullfile(myFolder, '*.PNG');
pngFiles = dir(filePattern);
% Open the video writer object.
writerObj = VideoWriter('YourAVI.avi');
% Go through image by image writing it out to the AVI file.
for frameNumber = 1 : length(pngFiles)
% Construct the full filename.
baseFileName = pngFiles(frameNumber).name;
fullFileName = fullfile(myFolder, baseFileName);
% Display image name in the command window.
fprintf(1, 'Now reading %s\n', fullFileName);
% Display image in an axes control.
imageArray = imread(fullFileName);
imshow(imageArray) % Display image.
% Write this frame out to the AVI file.
writeVideo(writerObj, imageArray);
end
% Close down the video writer object to finish the file.
close(writerObj);
*I get this error***
Error using VideoWriter/writeVideo (line 338)
OBJ must be open before writing video. Call open(obj) before calling writeVideo.
Error in Frame_2_vid (line 22)
writeVideo(writerObj, imageArray);
0 个评论
采纳的回答
Stephen23
2016-2-19
编辑:Stephen23
2016-2-19
Why not read the error message and do exactly what it tells you to do? The message is quite helpful: "Call open(obj) before calling writeVideo" means you need to put this before your for-loop:
open(writerObj)
There is also a big clue that you close the object, but never open it.
The videowriter documentation also clearly shows that the video object is opened before being written. The documentation is there for everyone to read.
2 个评论
Stephen23
2016-2-19
编辑:Stephen23
2016-2-19
Have a close look at your loop, and these lines of code:
% Display image in an axes control.
imageArray = imread(fullFileName);
imshow(imageArray) % Display image.
This is why code comments are useful: they tell you what the code is supposed to do (and it is why beginners need to learn to write code comments). So, what do you think happens in those lines? Hint: the function imshow only does one thing: it display an image. Try putting a % at the start of that line to stop it from being called (this is called "commenting" a line, because it turns the code line into a comment that does not run).
There is nothing wrong starting to learn something new! The biggest tip I can give you is "always read the documentation!". You can search MATLAB's documentation using your favorite internet search engine. This might be helpful too:
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!