readFrame() too slow. How to switch too VideoFileReader and VideoPlayer?

8 visualizzazioni (ultimi 30 giorni)
Hello,
I've written a code in which a user has to click on the video while it is being played. Unfortunately, the readFrame() method is too slow. I came across the VideoFileReader and VideoPlayer method, but I can't seem to figure out how to put a figure handle to the VideoPlayer window... In my code, I created a handle using image(temp,'Parent',curr_axes), but I can't seem to do the same for videoPlayer. Can anybody help?
%Load file
clear all, close all, clc;
fileList = dir('*.mp4');
video_name = fileList.name;
vid = VideoReader(video_name);
curr_axes = axes;
hfig = figure(1);
%Use callback function to register any mouse clicks on the figure
set(hfig,'WindowButtonDownFcn',@countclicks)
%Play video
framecount = 0;
while vid.hasFrame() %Play video
temp = vid.readFrame();
count = framecount + 1;
image(temp,'Parent',curr_axes);
if framecount == 1
figure(hfig);
p2 = imellipse;
vert_p2 = getVertices(p2);
wait(p2);
end
pause(0.05/25);
end

Risposta accettata

Walter Roberson
Walter Roberson il 4 Ago 2020
%Load file
fileList = dir('*.mp4');
video_name = fileList(1).name;
vid = vision.VideoFileReader(video_name);
hfig = figure(1);
curr_axes = axes('Parent', hfig);
box(curr_axes, 'off');
imh = image(curr_axes, []); %establish the handle
%Use callback function to register any mouse clicks on the figure
set(hfig,'WindowButtonDownFcn',@countclicks)
%Play video
framecount = 0;
while ~isdone(vid) %read and play video
temp = step(vid);
count = framecount + 1;
set(imh, 'CData', temp);
if framecount == 1
p2 = imellipse(curr_axes);
vert_p2 = getVertices(p2);
wait(p2);
end
pause(0.05/25);
end
  2 Commenti
Sam
Sam il 4 Ago 2020
Thank you! But unfortunately, this videoreader is even slower in my case...
Walter Roberson
Walter Roberson il 4 Ago 2020
How are you measuring the speed? Did you comment out the pause() and put in a tic and toc at appropriate places?

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by