ROI in video using the first frame

6 vues (au cours des 30 derniers jours)
Shu-An Hsieh
Shu-An Hsieh le 3 Oct 2022
Commenté : Shu-An Hsieh le 4 Oct 2022
Hi,
I would like to specify the box on the first frame of a video and then have all subsequent frames use that same box location.
I have a for loop here but unsure where should add this part in. Thank you!
for frame = 1 : numberOfFrames
% Extract the frame from the movie structure.
thisFrame = read(videoObject, frame);
thisFrame = thisFrame(557:702,70:216, :, :);
% Display it
hImage = subplot(1, 2, 1);
image(thisFrame);
axis image;
ongoing = frame/framerate;
total = numberOfFrames/framerate;
caption = sprintf('Time %.3f of %.3f sec.', ongoing, total);
title(caption, 'FontSize', 20);
drawnow; % Force it to refresh the window.
  2 commentaires
Kevin Holly
Kevin Holly le 3 Oct 2022
Are you trying to crop a video to a rectangular region of interest (ROI)? Is the ROI defined by the user or based on the image?
Shu-An Hsieh
Shu-An Hsieh le 3 Oct 2022
I am trying to crop a circle on my video. The ROI will be based on the user.

Connectez-vous pour commenter.

Réponse acceptée

Kevin Holly
Kevin Holly le 3 Oct 2022
Modifié(e) : Kevin Holly le 3 Oct 2022
Read video and have user define Circle ROI:
v = VideoReader('xylophone.mp4');
frame = readFrame(v);
imshow(frame)
c = drawcircle;
After Circle ROI is define, you could have a pushbutton callback that creates a mask and plays video:
mask = createMask(c);
while hasFrame(v)
frame = readFrame(v);
imshow(uint8(mask).*frame)
end
  22 commentaires
Shu-An Hsieh
Shu-An Hsieh le 4 Oct 2022
Thank you Kevin! I am wondering if it is possible the get several ranges and substact a base number out of it. Also, I am wondering if I can further save an additional figure of the right figure when the code ends.
Shu-An Hsieh
Shu-An Hsieh le 4 Oct 2022
Actually, I am thinking to the get the area between two points, so like you drag a line between two points and the area above and between those two is the area I wanted. Thank you!

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by