前回までの流れは以下のページにまとめています:
今まではフレームが1秒間に何枚来るかをチマチマと数えてFPSを計算していました。
しかしOpenCVには処理時間を計るための関数があります。CPUのTick数を使う関数です。
そこで、その関数を使ってFPSを計算するクラスを書いてみました。
# my_lib.py import cv2 class fpsWithTick(object): def __init__(self): self._count = 0 self._oldCount = 0 self._freq = 1000 / cv2.getTickFrequency() self._startTime = cv2.getTickCount() def get(self): nowTime = cv2.getTickCount() diffTime = (nowTime - self._startTime) * self._freq self._startTime = nowTime fps = (self._count - self._oldCount) / (diffTime / 1000.0) self._oldCount = self._count self._count += 1 fpsRounded = round(fps, 1) return fpsRounded
こんな感じで使います:
import cv2 import my_lib cap = cv2.VideoCapture(0) fpsWithTick = my_lib.fpsWithTick() # 初期化 while True: ret, src = cap.read() cv2.imshow('frame',src) fps = fpsWithTick.get() # FPSを計算する print(fps) k = cv2.waitKey(30) & 0xff if k == 27: # ESC key break cap.release() cv2.destroyAllWindows()
なお、
さんの以下の記事を参考にさせて頂きました。
OpenCV 備忘録: OpenCVで、fpsのレートを画面に表示させた
ご参考になれば幸いです。