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

C++とOpenCVで動画のFPS値を取得する方法をわかりやすく解説

OpenCVで動画のFPS(Frames Per Second:1秒あたりのフレーム数)を取得するには、VideoCaptureクラスが提供するget()メソッドを使用します。引数にはCAP_PROP_FPSを指定します。このプロパティは、対象動画のFPS値を返します。

プログラムの冒頭では、FPS値を格納するための整数型変数「FPS」を宣言しています。その後、FPS = cap.get(CAP_PROP_FPS);という処理によって、取得したFPS値を変数に保存します。

以下のサンプルプログラムは、指定した動画ファイルのFPSを取得し、コンソールウィンドウに表示するものです。

サンプルコード

#include<opencv2/opencv.hpp>//VideoCaptureクラスを使用するためのOpenCVヘッダー//
#include<iostream>
using namespace std;
using namespace cv;
int main() {
   int FPS;//FPS値を格納するための整数変数を宣言//
   VideoCapture cap("video1.mp4");//動画ファイルからフレームストリームを読み込むオブジェクトを宣言//
   FPS = cap.get(CAP_PROP_FPS);//動画のFPS値を取得//
   cout << "FPS:" << FPS << endl;//取得したFPS値をコンソールウィンドウに表示//
   system("pause");//結果を確認できるようシステムを一時停止//
   cap.release();//バッファメモリを解放//
   return 0;
}

このプログラムを実行すると、コンソールウィンドウに読み込んだ動画のFPS値が表示されます。

実行結果

C++とOpenCVで動画のFPS値を取得する方法をわかりやすく解説

補足ポイント

  • cap.get(CAP_PROP_FPS)は実際にはdouble型の値を返すため、より正確な値が必要な場合はdouble型変数への代入を推奨します。
  • 動画の総フレーム数を取得したい場合は、代わりにCAP_PROP_FRAME_COUNTを引数として指定してください。
  • Webカメラなどライブストリームの場合、環境によってはFPSが正しく取得できないことがあります。その際は0が返される点に注意しましょう。
  1. C++とOpenCVでシングルチャンネル画像のピクセル値を読み取る方法

    ピクセル値を読み取る仕組み デジタル画像は無数のピクセル(画素)から構成されています。OpenCVを使えば、これらのピクセル値を簡単に読み取ることができます。ただし、カラー画像はBGRの3つのチャンネルを持っているため、ピクセル値を正確に取得したい場合は、単一チャンネル(シングルチャンネル)として個別に扱う必要があります。 本記事では、まず「cimage」という名前のMat行列に画像を読み込み、cvtColor(cimage, img, COLOR_BGR2GRAY); 関数を使ってグレースケール画像へ変換し、その結果を「img」という名前の行列に格納します。グレースケール化によって画像が単一

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

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