How to rotate a video 180 degrees?

36 visualizaciones (últimos 30 días)
Gulce Lale
Gulce Lale el 2 de Dic. de 2020
Comentada: Stephan el 3 de Dic. de 2020
I have videos in .mp4 format and I need to rotate them vertically so that they will rotate 180 degrees.
I wrote the code and it rotates 180 degrees, however, it only takes one frame, so the video duration is 0 and the video is grayscale, which is a thing that I don't want since the video includes a red fixation point.
vidName = 'SID12.mp4';
vidPath = strcat(videosPathToBeEdited, vidName);
V= VideoReader(vidPath);
for k=1:video_duration*FrameRate
RGB= readFrame(V);
clear temp
image_rot = flipud( RGB );
rotated_vid = image_rot;
end
rotated_vid = rotated_vid(:,:,end:-1:1);
%calling save video function in another .m file
savemy_video(rotated_vid,[vidName(1:end-4), '_rev_rotated' video_duration_inname]);
Are there any easier and quicker ways to rotate a video? or if you could help me with this code would really appreciate it.

Respuesta aceptada

Stephan
Stephan el 3 de Dic. de 2020
vidName = 'xylophone.mp4';
vidPath = strcat(videosPathToBeEdited, vidName);
V = VideoReader(vidName);
% read the complete video and flip it without loop
RGB = read(V);
RGB_flip = flipud(RGB);
% save the new file
V_flip = VideoWriter('C:\YOUR_PATH_NAME_HERE\xylophone_flip','MPEG-4');
open(V_flip)
writeVideo(V_flip,RGB_flip)
close(V_flip)
% read the flipped video
V_flip = VideoReader('C:\YOUR_PATH_NAME_HERE\xylophone_flip.mp4');
% play the flipped video
while hasFrame(V_flip)
frame = readFrame(V_flip);
imshow(frame)
pause(1/V_flip.FrameRate);
end
  4 comentarios
Gulce Lale
Gulce Lale el 3 de Dic. de 2020
Thank you! I solved the problem, and your solution also works!
Stephan
Stephan el 3 de Dic. de 2020
Did you notice that you can accept and/or vote for useful answers?

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

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

Start Hunting!

Translated by