How to replace a frame (rgb image) in a small video sequence ?

3 Ansichten (letzte 30 Tage)
I want to replace a single rgb frame in a 4 sec video sequence, example i want to replace the 5th frame with my rgb image of same dimension as the video dimension (example 256x256)

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 13 Feb. 2017
vid = 'NameOfTheVideo.avi';
obj = VideoReader(vid);
newobj = VideoWriter('NameOfNewVideo.avi', 'Uncompressed AVI');
replacement_frame_5 = randi([0 255], 256, 256, 3, 'uint8'); %or as appropriate
fr = 0;
while hasFrame(obj)
fr = fr + 1;
a = readFrame(obj);
if fr == 5
a = replacement_frame_5;
end
writeVideo(newobj, a);
end
close(newobj);
clear obj
  2 Kommentare
raviraja
raviraja am 21 Feb. 2017
Hi Mr. Walter, thanks for the help with minor modification it works just fine, after replacing the frame in video how to display the video ? I used implay but it showing me some error I am attaching the screenshot here can you suggest me here,, I saved the video file in 'writer' variable name attaching that variable data also again thanks for the help...
Walter Roberson
Walter Roberson am 21 Apr. 2018
Bearbeitet: Walter Roberson am 21 Apr. 2018
It is not possible to play a video writer object. Once the video writer object is closed, use one of the techniques to play the video by name. Or create a video player object and step(player, a) as you go through outputting the frames to the video writer object.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by