필터 지우기
필터 지우기

capturing the same frame

조회 수: 2 (최근 30일)
Osita Onyejekwe
Osita Onyejekwe 2017년 4월 7일
댓글: Osita Onyejekwe 2017년 4월 10일
My frame is capturing the same beginning video frame in multiple figures. I want the multiple figure to be images of the video as it progrosses, not the same figure for multiple figures. Here is my code. Please fix it
obj = VideoReader('Climate.mp4');
for k = 1 : 5 %fill in the appropriate number
this_frame = read(obj, k);
thisfig = figure();
%thisfig = gcf;
thisax = axes('Parent', thisfig);
image(this_frame, 'Parent', thisax);
title(thisax, sprintf('Frame #%d', k));
end

채택된 답변

Image Analyst
Image Analyst 2017년 4월 7일
So don't create a new figure each frame. How does this work:
obj = VideoReader('Climate.mp4');
for k = 1 : obj.NumberOfFrames
this_frame = read(obj, k);
imshow(this_frame);
title(sprintf('Frame #%d', k), 'FontSize', 14);
drawnow; % Force immediate repaint of screen.
pause(0.1); % Increase number to slow it down more.
end
  댓글 수: 11
Osita Onyejekwe
Osita Onyejekwe 2017년 4월 7일
obj = VideoReader('Climate.mp4'); for k = 1 : obj.NumberOfFrames this_frame = read(obj, k); imshow(this_frame); title(sprintf('Frame #%d', k), 'FontSize', 14); drawnow; % Force immediate repaint of screen. pause(0.1); % Increase number to slow it down more. promptMessage = sprintf('Showing Frame #%d.\nDo you want to Continue processing,\nor Quit processing?', k); titleBarCaption = 'Continue?'; buttonText = questdlg(promptMessage, titleBarCaption, 'Continue', 'Quit', 'Continue'); if strcmpi(buttonText, 'Quit') break; if rem(k, 5) == 0 % Ask every fifth frame buttonText = questdlg(promptMessage, titleBarCaption, 'Continue', 'Quit', 'Continue'); end end end
i put the if in but now it underlines everything...
Image Analyst
Image Analyst 2017년 4월 7일
You need to think about the logic flow. This works just fine.
obj = VideoReader('Climate.mp4');
for k = 1 : obj.NumberOfFrames
this_frame = read(obj, k);
imshow(this_frame);
title(sprintf('Frame #%d', k), 'FontSize', 14);
drawnow; % Force immediate repaint of screen.
pause(0.1); % Increase number to slow it down more.
if rem(k, 5) == 0 % Ask every fifth frame
promptMessage = sprintf('Showing Frame #%d.\nDo you want to Continue processing,\nor Quit processing?', k);
titleBarCaption = 'Continue?';
buttonText = questdlg(promptMessage, titleBarCaption, 'Continue', 'Quit', 'Continue');
if strcmpi(buttonText, 'Quit')
break;
end
end
end

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Osita Onyejekwe
Osita Onyejekwe 2017년 4월 7일
Here is another look
  댓글 수: 4
Osita Onyejekwe
Osita Onyejekwe 2017년 4월 10일
Thank you so much. All is perfect now!!!
Osita Onyejekwe
Osita Onyejekwe 2017년 4월 10일
Final Final Final question.
Given this code, is there a way I can save all the frames into a folder as image files as I run the code?
obj = VideoReader('Climate.mp4'); for k = 1 : obj.NumberOfFrames this_frame = read(obj, k); imshow(this_frame); title(sprintf('Frame #%d', k), 'FontSize', 14); drawnow; % Force immediate repaint of screen. pause(0.1); % Increase number to slow it down more. if rem(k, 5) == 0 % Ask every fifth frame promptMessage = sprintf('Showing Frame #%d.\nDo you want to Continue processing,\nor Quit processing?', k); titleBarCaption = 'Continue?'; buttonText = questdlg(promptMessage, titleBarCaption, 'Continue', 'Quit', 'Continue'); if strcmpi(buttonText, 'Quit') break; end end end
thank you!!!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Animation에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by