使用python3,gtk3。我正在开发一个计算机视觉应用程序,需要操作和显示(回放)视频中的帧。
目前,我使用静态方法Pixbuf
创建一个新的new_from_data
,由一个包含操作帧的 numpy 数组创建的字节序列提供,我我遇到了性能问题,例如无法以20fps播放视频。
我想知道:这是解决这类问题的方法吗?是为相对便宜或昂贵的每一帧创建一个新的Pixbuf?我应该使用其他方法,例如使用new_from_stream
吗? (不熟悉)
答案 0 :(得分:2)
这不是一个更容易的"但是,如果您遇到性能问题,则应尝试通过Clutter Clutter-Gtk使用硬件加速来绘制帧。
您可以创建一个GtkClutterEmbed窗口小部件,它将为您提供ClutterStage,这是一个ClutterActor。每当你有一个新的框架,你可以创建一个新的ClutterImage并做clutter_image_set_data()(就像pixbuf的new_from_data),然后将ClutterActor的ClutterContent(例如:ClutterStage)设置为这个新的ClutterImage。
这就是Gnome-Ring播放视频的方式,您可以查看其source code here的灵感。