1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
import cv2 import time if __name__ == '__main__': # ビデオの読み込み(VideoCapture()に動画ファイルを指定したパターン) video = cv2.VideoCapture("test.MOV") # OpenCVのバージョン (major_ver, minor_ver, subminor_ver) = (cv2.__version__).split('.') if int(major_ver) < 3: fps = video.get(cv2.cv.CV_CAP_PROP_FPS) print("1秒あたりのフレーム数(cv2.cv.CV_CAP_PROP_FPS):{0}".format(fps)) else: fps = video.get(cv2.CAP_PROP_FPS) print("1秒あたりのフレーム数(cv2.CAP_PROP_FPS) :{0}".format(fps)) # キャプチャするフレームの数 num_frames = 120 print("取得したフレーム数は{0}".format(num_frames)) # スタート時間 start = time.time() # 取得 for i in range(0, num_frames): ret, frame = video.read() # 終了時間 end = time.time() # 経過時間 seconds = end - start print("経過時間:{0}".format(seconds)) # フレーム数の見積もり fps = num_frames / seconds print("1秒間におけるフレーム数の見積もり:{0}".format(fps)) # 終わり video.release() |
OpenCVとPythonで動画ファイルのフレームレート,フレーム数を求めるプログラムです。
Webカメラを使いたいなら、
video = cv2.VideoCapture(0)
となります。
あとは、プログラムのコメントに書いてある通りです。
参考:https://www.learnopencv.com/how-to-find-frame-rate-or-frames-per-second-fps-in-opencv-python-cpp/
コメント
お世話になります。
上記の『動画のフレームレート、フレーム数を求める』プログラムを、
Python 3.8.1、opencv-python 4.2.0.34
で実行したところ、
# 取得
for i in range(0,num_frames):
ret, frame = video.read()
の、frames): の直後で止まり、
unindent does not match any outer indentation level
というエラーメッセージがでました。
何がおかしいのでしょうか?
もしも、Pythonのバージョンを変える必要があるなら今の 3.8.1 と併用(選択使用)
できないでしょうか?
お世話になります。
上記プログラムで、
# 取得
for i in range(0, num_frames):
ret, frame = video.read()
の、frames): の直後で止まり、次のようなエラーが表示されました。
unindent does not match any outer indentation level
なぜでしょうか?
Python 3.8.1 と opencv-python 4.2.0.34
を使用していますが、これが問題でしょうか?
処置方法、注意事項を教えていただけませんか?