fps - 如何将计数除以时间函数以确定 fps

新手上路,请多包涵

我有一个计算每一帧的计数器。我想做的是将其除以时间以确定我的程序的 FPS。但我不确定如何在 python 中对计时函数执行操作。

我试过将时间初始化为

fps_time = time.time
fps_time = float(time.time)
fps_time = np.float(time.time)
fps_time = time()

然后计算fps,

 FPS = (counter / fps_time)
FPS = float(counter / fps_time)
FPS = float(counter (fps_time))

但是我得到的错误是对象不可调用或 /: ‘int’ 和 ‘buildin functions’ 的操作数不受支持

先谢谢您的帮助!

原文由 S price 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 484
2 个回答
  • 这是在每一帧打印程序 帧速率 的一种非常简单的方法(不需要计数器):
   import time

  while True:
      start_time = time.time() # start time of the loop

      ########################
      # your fancy code here #
      ########################

      print("FPS: ", 1.0 / (time.time() - start_time)) # FPS = 1 / time to process loop

  • 如果你想要 x 秒内的 平均 帧速率,你可以这样做(需要计数器):
   import time

  start_time = time.time()
  x = 1 # displays the frame rate every 1 second
  counter = 0
  while True:

      ########################
      # your fancy code here #
      ########################

      counter+=1
      if (time.time() - start_time) > x :
          print("FPS: ", counter / (time.time() - start_time))
          counter = 0
          start_time = time.time()

希望能帮助到你!

原文由 Elouarn Laine 发布,翻译遵循 CC BY-SA 3.0 许可协议

奇迹般有效

import time
import collections

class FPS:
    def __init__(self,avarageof=50):
        self.frametimestamps = collections.deque(maxlen=avarageof)
    def __call__(self):
        self.frametimestamps.append(time.time())
        if(len(self.frametimestamps) > 1):
            return len(self.frametimestamps)/(self.frametimestamps[-1]-self.frametimestamps[0])
        else:
            return 0.0
fps = FPS()
for i in range(100):
    time.sleep(0.1)
    print(fps())

确保每帧调用一次 fps

原文由 Menua 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题