動画データを一連の画像データに変換

MP4形式やAVI形式の動画データをopencvを用いて一連の画像データに変換

動画のデータセットの分析についてはそのまま分析にかけることは現実的ではなく、多くの場合、フレーム数を取得し、一連の画像データに変換する処理を行います。Opencvを用いて動画データセットを一連の画像データに変換する際に必要になる処理について見ていきます。

Requirements

  • opencv-python 3.4.0.12
In [1]:
import cv2
import os

Load Dataset

このチュートリアルでは動画のデータとしてFirst-Person Social Interactions Datasaetを用います。
Alireza Fathi, Jessica K. Hodgins, James M. Rehg, Social Interactions: A First-Person Perspective, IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR), 2012.
今回は全ての動画データから画像データを作成すると時間がかかりすぎるために、上記のデータセットの中の一部、具体的にはMichael, Day2の19番目の動画データを用いて画像への変換を行います
In [2]:
filename = "Michael_Day2_019.avi"

変換と画像の書き込み

In [3]:
video = cv2.VideoCapture(filename)
save_dir = "save_dir"
if not os.path.exists(save_dir):
    os.mkdir(save_dir)
frame_count = int(video.get(7))
print("frame_count:{}".format(frame_count))
for i in range(frame_count):
    _, frame = video.read()
    cv2.imwrite(save_dir+"/"+str(i)+".png", frame)
frame_count:35391

しばらく待つと、save_dirの中に一連の画像データが生成されます。