前提・実現したいこと
iPadで録画した動画をOpenCVの関数で扱っています。
基本的にfpsは60なのですが、フレームレートが可変であるため稀にいくつかフレームが抜け落ちていることがあります。
そこで、1秒ごとに正確なfpsを調べたいのですがこれを行う方法はありますか?(言い換えるとcap.read()を何回呼び出せば1秒経過するか、または現在の経過時間[秒]の整数部分が知りたい)
OpenCVでできない場合は他のライブラリを使うことになっても構いません。
MacのQuickTime Playerなどの一部動画再生ソフトでは動画をコマ送りにできますが、そのソフト上でははっきりとフレームが抜け落ちていることがわかる(例えばfpsが57だった秒は、58コマ進んだところで「00:24」のように表示されている秒が進む)ため、何かしらの形で情報は取得できそうな気はします。特に、録画を開始した直後と終了する直前は極端にfpsが下がるようで、30コマほど進めただけで1秒進むことも確認できます。
試したこと
Python3
1import cv2 2cap = cv2.VideoCapture('test.mp4') 3print(cap.get(cv2.CAP_PROP_FRAME_COUNT)) # 合計フレーム数 4print(cap.get(cv2.CAP_PROP_FPS)) # fps
これらの方法で合計フレーム数や動画全体のfpsを調べることはできますが、1秒ごとのfpsではありません。
また、調べたいのはcv2.TickMeter()で測ることのできる実時間でもありません。
補足情報
MacBook Pro (Retina, 13-inch, Early 2015) 10.14.2
Python 3.6.5
OpenCV 4.1.0
回答1件
あなたの回答
tips
プレビュー