PythonのOpenCVを使って動画のフレーム数を自動化して取得する方法

Pythonで動画のフレーム数を自動で取得する方法が知りたいな…。一度手に入れれば、解析とかにも使えそうなんだけど…。
猫男
猫男
catman
catman
その任せておくんだ。PythonOpenCVを使えば、動画のフレーム数を簡単に取得できる方法を教えてあげよう。さあ、一緒にやってみるよう。

 

Pythonで動画フレーム数を自動取得する方法

Pythonの強力なライブラリOpenCVを使うことで、動画のフレーム数を簡単に取得できます。動画中のフレーム数を知ることで、動画全体の処理や解析を効率的に進めることができます。

 

OpenCVとは

OpenCVは、コンピュータビジョンのためのオープンソースライブラリです。画像処理や動画解析などの機能を豊富に備えており、Pythonを使うことで簡単に高度な処理を実行できます。

今回使用するのは、動画の情報を取得する機能です。

 

Pythonコードでフレーム数を取得する

具体的にどのようにフレーム数を取得するのか、Pythonコードを見てみましょう。

import cv2

video_path = 'sample.mp4'
cap = cv2.VideoCapture(video_path)

if not cap.isOpened():
    print("Error: ファイルが開けないよう")

frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
cap.release()

print(f"総フレーム数は: {frames}")

コードを解説していきます。

 

コードの解説

まず、cv2.VideoCaptureを使って動画ファイルを開きます。

cv2.CAP_PROP_FRAME_COUNTを使うと、動画の総フレーム数を取得できます。

取得したフレーム数は、動画解析や他の用途に活用できます。

最後に、cap.release()をコールして、使用したリソースを解放します。

 

OpenCVのインストール方法

OpenCVは、Pythonのパッケージマネージャpipを使って簡単にインストールできます。

インストール手順

pip install opencv-python

これでOpenCVのインストールは完了です。

インストールができたら、動画処理が可能になります。

 

応用: 動画の各フレームを取得して保存

動画のフレーム数を取得できるようになれば、それを応用して、各フレームを画像として保存することが可能です。

フレームを取得して保存するPythonコード

import cv2
import os

video_path = 'sample.mp4'
output_dir = 'frames'

if not os.path.exists(output_dir):
    os.makedirs(output_dir)

cap = cv2.VideoCapture(video_path)
frame_number = 0

while True:
    ret, frame = cap.read()
    if not ret:
        break

    frame_path = os.path.join(output_dir, f"frame_{frame_number:04d}.png")
    cv2.imwrite(frame_path, frame)
    frame_number += 1

cap.release()

 

コードの解説

このコードでは、動画から順次フレームを読み込んで画像ファイルとして保存しています。

os.makedirsでフレーム画像を保存するディレクトリを作成しています。

cv2.imwriteを使って、各フレームをPNG形式で保存しています。

ファイル名にはframe_0000.pngのように連番をつけています。

 

動画からフレーム数を自動で取得できると、データ分析にすごく役立ちそうです!PythonとOpenCV、すごい力ですね。
猫男
猫男
catman
catman
PythonとOpenCVの組み合わせを極めれば、動画の自動化処理もお手の物だよう。まずはフレーム数取得から始めて、徐々にステップアップするんだ。

 

EARTHPG 自動化研究所

「その作業、仕組みにできます。」

Google Apps Script、Python、スプレッドシート自動化、WordPress開発、 API連携、AI活用まで対応。 小さな自動化から業務全体の設計まで、研究所が支援します。