動画からのフレーム抽出
以前の記事で画像のパターンマッチングを試しました。
Pythonで画像のテンプレートマッチングしてみるテンプレートマッチングで何ができる?
テンプレートとして与えた画像に近い領域を別の画像から発見することができます。
今回はPytho...
このような画像に対するアルゴリズムを動画に適用することを考える際、動画から画像を生成するという手順を踏むことが考えられます。
この記事では動画から1秒おきにフレームの抽出を行います。
環境
使用したPythonとライブラリのバージョンは以下になります。
Python | 3.8.12 |
opencv-python | 4.5.5.62 |
使用データ
いらすとや様のハエとホールケーキのイラストを動画に加工して使用しました。
コード
下記により抽出を行いました。
import cv2
capture = cv2.VideoCapture("./bug.mov") # 動画へのパス
fps = capture.get(cv2.CAP_PROP_FPS)
count = 0 # フレーム用カウンタ
while True:
ret, frame = capture.read()
if not ret: # 読み込めなかった場合はループを抜ける
break
if int(count % fps) == 0: # 1秒ごとにフレームを保存
path_num = int(count // fps)
cv2.imwrite(f"./images/{path_num:02}.png", frame)
count += 1
実行結果
0秒目(images/00.png)
1秒目(images/01.png)
2秒目(images/02.png)
終わりに
今回は動画からフレーム抽出を行いました。
うまくフレームを取り出せたのでテンプレートマッチングも適用できそうですね。