From: Thomas C. <tca...@gm...> - 2017-01-07 20:36:39
|
To push much past 20Hz you will want to look into blitting. See http://matplotlib.org/devdocs/api/animation_api.html for a rough introduction on how to use blitting (and see the animation code for an example of handling all of the corner cases). Tom On Fri, Oct 14, 2016 at 5:29 PM Hjalmar Turesson <htu...@gm...> wrote: > That works fine. And it explains why update() only worked with the Qt > backends (I tried all). The speed is still not super impressive though (~20 > fps), but I think I will just start skipping frames when playing at above > 20 fps. > > Thanks, > Hjalmar > > On Fri, Oct 14, 2016 at 10:37 AM, Thomas Caswell <tca...@gm...> > wrote: > > Instead of `canvas.update` call `self.im.figure.canvas.draw_idle()`. > > IIRC `update` is part of the API inherited from Qt, not part of the API we > ensure that all of the canvas objects have. > > Tom > > On Fri, Oct 7, 2016 at 4:48 PM Hjalmar Turesson <htu...@gm...> > wrote: > > Hi all, > > > I made a little video player using matplotlib. I need it to allow very > good control over the playback speed (e.g. direction, frame-by-frame > stepping and fast and slow). > > However, it's not very fast. Max frame rate I can achieve is 10-20 fps. > I followed Basti's advice on speeding up plotting ( > http://bastibe.de/2013-05-30-speeding-up-matplotlib.html). > This resulted in a more than 2x improvement (from <5 to 10-20 fps), but I > would like to reach 40-50 fps. > > The core code is something like this: > > self.im.set_data(self.video_frame) > > self.text.set_text('some text') > > self.ax.draw_artist(self.im) > self.ax.draw_artist(self.text) > self.im.figure.canvas.update() > self.im.figure.canvas.flush_events() > > video_frame is a 200 x 250 array. I tried lowering dpi from 100 to 50, > but the improvement is marginal. > > I saw that Harden ( > http://www.swharden.com/wp/2013-04-15-fixing-slow-matplotlib-in-pythonxy/) > recommended using TkAgg over Qt4Agg since TkAgg is supposed to be faster. > But, TkAgg doesn't play nicely with figure.canvas.update(). I get the > following error: > AttributeError: 'FigureCanvasTkAgg' object has no attribute 'update' > It works with Qt4Agg though. > > Does anyone have a fix for this? Or some general advice on how to speed up > playback speed? > > I tried with both matplotlib 1.5.1 and the current version from > github 2.0.0b4+2373.gb34c55d > > Best regards, > Hjalmar > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, SlashDot.org! http://sdm.link/slashdot > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > > |