【问题标题】:Shady engine in python doesn't seems to display beyond 16 framespython中的Shady引擎似乎没有显示超过16帧
【发布时间】:2022-01-13 03:10:12
【问题描述】:

我正在使用 Shady 循环显示图像(PILLOW 图像)。为此,我使用以下命令:

Shady.Require( 'numpy', 'Image' )

w = Shady.World(  )

s = w.Stimulus( imList )

s.frame = lambda t: t * 60

其中 imList 是 60 个 PIL 图像的列表。不知何故,Shady 并没有在我的屏幕上产生任何东西。但是,如果我将列表的大小减少到 17,那么它就可以了。

Shady.Require( 'numpy', 'Image' )

w = Shady.World(  )

s = w.Stimulus( imList[0:17] )

s.frame = lambda t: t * 60

我不知道发生了什么。我是 Shady 的新手,没有太多文档可以阅读以了解发生了什么。我只想循环显示 60 张图像(60 FPS)。我认为上面的代码应该这样做。但它不起作用。任何帮助将不胜感激。我已经坚持了几天了。还有,为什么

s.frame = lambda t: t * 60

意思是 60 FPS?我不确定我是否也完全理解这一点。我试图寻找一些关于 s.frame 和 lambda 函数的解释,但找不到答案。

感谢您的关注!

最好的问候。

【问题讨论】:

    标签: python shady


    【解决方案1】:

    来自 Shady 的 Stimulus constructor documentation(已添加重点):

    multipage (bool) – 如果将其设置为 True,将使用 LoadPages() 方法加载多个图像帧:这会将每个帧作为单独的纹理传输到显卡,您可以使用.page 财产。

    相比之下,如果您将其保留为默认值False,则会通过将多个图像帧水平连接成一个纹理来处理它们,并且您可以使用.frame 属性在它们之间切换,该属性间接操纵.carrierTranslation .

    您可能需要将multipage=True 用于具有较大宽度和/或大量帧的动画图像,因为正常的连接方法可能会导致超过最大允许宽度的纹理。

    所以:

    w = Shady.World()
    s = w.Stimulus( imList, multipage=True )
    s.page = lambda t: t * 60  # note the use of .page rather than .frame
    

    animated-textures 演示中也对此进行了说明。该演示还向您介绍了lambda 的想法,说明该属性被设置为以秒为单位的时间函数。这个概念在“关键概念”一章“Making Properties Dynamic”中有详细解释。 (我不确定您最终是如何产生“您可以阅读的文档不多”的印象。)

    该特定函数lambda t: t*60 以秒为单位获取时间t,将其乘以每秒60 帧,然后返回结果。如果您将秒数乘以每秒帧数,您会得到一个帧号,这就是 s.frame(或 s.page)的预期值。当您分配给.frame.page 时,将自动处理必要的舍入和以可用帧数为模的环绕。

    您的动态属性不必是 la​​mbda。它们可以是任何可调用的:一个普通函数、一个对象方法、一个定义了__call__ 方法的成熟自定义类的实例,......任何你喜欢的,只要它只需要一个参数。 lambda 只是一个紧凑且非常单一的选项——请参阅 How are lambdas useful?

    【讨论】:

    • 太棒了!你一定是个天才:-)。这行得通!非常感谢您花时间解释并提供解决方案。再次感谢!另外,是的,我现在看到有足够的文档。我想我只是不耐烦花了几天的时间。在我问下一个问题之前,我会阅读更多文档:-)。
    • 我很高兴它很有用。如果它解决了您的问题,请使用左侧的绿色复选标记符号“接受”答案。这就是在这里验证答案的方式。
    • 知道了!接受答案。
    猜你喜欢
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 2011-09-11
    • 1970-01-01
    相关资源
    最近更新 更多