C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++とOpenCVで動画の総フレーム数をカウント・取得する方法

はじめに

この記事では、OpenCVを使って動画の総フレーム数を求める方法を解説します。OpenCVを利用すれば、動画の総フレーム数を数えて表示するのは非常に簡単です。ただし、一点だけ注意が必要です。リアルタイム映像(Webカメラの映像など)のフレーム数は数えることができません。リアルタイム映像には決まったフレーム数が存在しないためです。

以下のプログラムでは、動画ファイルの総フレーム数をカウントし、コンソール画面に表示します。

サンプルコード

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main() {
    int frame_Number;//総フレーム数を格納する整数型変数を宣言//
    VideoCapture cap("video.mp4");//動画からフレームを読み込むVideoCaptureオブジェクトを宣言//
    frame_Number = cap.get(CAP_PROP_FRAME_COUNT);//総フレーム数を取得//
    cout << "Total Number of frames are:" << frame_Number << endl;//コンソールにフレーム数を表示//
    system("pause");//結果を確認できるように一時停止//
    cap.release();//バッファメモリを解放//
    return 0;
}

コードの解説

  • VideoCapture cap("video.mp4"):指定した動画ファイルを開き、フレームを読み込むためのオブジェクトを生成します。
  • CAP_PROP_FRAME_COUNT:動画の総フレーム数を表すプロパティです。cap.get()に渡すことで、その値を取得できます。
  • cap.release():使用後はバッファメモリを解放するため、必ず呼び出すようにしましょう。

なお、CAP_PROP_FRAME_COUNTが返す値はdouble型です。必要に応じてint型へキャストしてください。

実行結果

プログラムを実行すると、出力として動画の総フレーム数を示す整数値が得られます。

C++とOpenCVで動画の総フレーム数をカウント・取得する方法

  1. C++とOpenCVを使って線を描画する方法

    OpenCVで線を描画するには、始点と終点の2つの座標が必要です。さらに、線を描くためのキャンバス(描画領域)も用意しなければなりません。線を描画するために必要な要素OpenCVでは、キャンバスとして機能するのが行列(Mat)です。この行列に対して、線の始点と終点を定義し、加えて以下の情報も指定します。線の色線の太さつまり、OpenCVで線を描くには、行列・2つの点・色・線の太さという4つの要素を宣言しておく必要があります。必要なヘッダーファイルOpenCVで線を描画するには、<imgproc.hpp>ヘッダーをインクルードします。これは、line()関数がこのヘッダー内で定義され

  2. C++とOpenCVで画像のチャンネル数を取得する方法を解説

    この記事では、OpenCVを使って画像のチャンネル数を調べる方法について解説します。プログラムを実行すると、コンソール画面に画像のチャンネル数が表示されます。チャンネル数を取得するには、OpenCVが提供するchannels()メソッドを使用します。このメソッドは、Matクラスのオブジェクト(画像行列)に対して呼び出すことで、その画像のチャンネル数を整数値として返します。例えば、カラー画像の場合は通常3チャンネル(BGR)、グレースケール画像の場合は1チャンネルとなります。画像処理を行う際、扱っている画像がカラーかモノクロかを判別するために、チャンネル数の確認は非常に重要な処理の一つです。以下