PythonでOpenCVを使って動画からフレーム(画像)を切り出す方法

スポンサーリンク

こんにちは、学習者の皆さん。今日は、PythonのOpenCVモジュールを使って動画から画像を抽出する方法を学びます。では、始めましょう

スポンサーリンク

チュートリアルの目標

プログラミング言語 Python の OpenCV モジュールを用いて、1 つのビデオファイルから各フレームを抽出することを目指します。

Python OpenCVによる動画からの画像抽出

さて、具体的に何をするのかがわかりました。さっそくコードを実装してみましょう。

1. モジュールのインポート

他のプロジェクトと同じように、最初のステップはモジュールをインポートすることです。このプログラムでは、openCVモジュールだけが必要です。

このモジュールがシステムにインストールされていることを確認してください.もし、OpenCV が何であるかを知らないなら、このチュートリアルを見てください。この記事では、OpenCV の基本的な概念に精通することができます

2. ビデオのキャプチャ

ビデオをキャプチャするために、opencv モジュールの VideoCapture 関数を使用し、録画したビデオを変数に格納します。

ビデオファイルがコードファイルと同じフォルダにあることを確認するか、ビデオファイルの正確なパスを入力する必要があります。

おすすめの読み物 moviepyモジュールを使って動画を編集するには?

ビデオを持っていない場合は、関数内で値0を渡すと、ウェブカメラからライブデータをキャプチャすることができます

1
2
3
import cv2
cam = cv2.VideoCapture("video.mp4")
currentframe = 0

3. 各フレームを抽出し、フレーム画像を保存する

コードを一行ずつ見て、理解しましょう。

1
2
3
4
5
6
7
8
while(True):
    ret,frame = cam.read()
    if ret:
        name = 'Video to ImagesFrame(' + str(currentframe) + ').jpg'
        cv2.imwrite(name, frame)
        currentframe += 1
    else:
        break

1行目。動画からフレームが無くなるまで処理を続けるループを作成。

2行目: read関数を使って、rel と frame の 2 つのオブジェクトを取得します。
rel
– フレームを受信しているかどうかを示す True または False のいずれかを返します。
frame` – 特定の瞬間のフレーム全体を返します。

3-6行目: rel の値を使用して、フレームが利用可能かどうかをチェックする if 条件です。そして、現在のフレームのパスと名前の形式を設定します。

currentframe 変数はフレーム数を保持しています。そして、imwrite関数を使って、先ほどのパスにフレームを書き込んでいきます。

7-8行目: ループを抜けるために、フレームがないときの else 条件が考慮されます。

4. 4. すべての Windows を解放して破棄する

最後のステップは、release 関数を使用して、先に作成したすべてのビデオキャプチャーオブジェクトを解放することです。

次に、destroyAllWindows 関数を使用して、作成されたすべてのウィンドウを破棄し、コード全体を終了します。

1
2
cam.release()
cv2.destroyAllWindows()

最終的なコードと出力

最終的なコードと、作成されたフレームのスクリーンショットを以下に示します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import cv2
import os
cam = cv2.VideoCapture("video.mp4")
currentframe = 0
while(True):
    ret,frame = cam.read()
    if ret:
        name = 'Video to ImagesFrame(' + str(currentframe) + ').jpg'
        cv2.imwrite(name, frame)
        currentframe += 1
    else:
        break
cam.release()
cv2.destroyAllWindows()
Frame By Frame OpenCV. - extract images from video in Python
Frame By Frame OpenCV

まとめ

動画から画像を抽出する方法がわかりましたね。お気に召したでしょうか?もっと学ぶために滞在してください

お読みいただきありがとうございました。

タイトルとURLをコピーしました