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値が表示されます。
実行結果

補足ポイント
cap.get(CAP_PROP_FPS)は実際にはdouble型の値を返すため、より正確な値が必要な場合はdouble型変数への代入を推奨します。- 動画の総フレーム数を取得したい場合は、代わりに
CAP_PROP_FRAME_COUNTを引数として指定してください。 - Webカメラなどライブストリームの場合、環境によってはFPSが正しく取得できないことがあります。その際は0が返される点に注意しましょう。
-
C++とOpenCVでシングルチャンネル画像のピクセル値を読み取る方法
ピクセル値を読み取る仕組み デジタル画像は無数のピクセル(画素)から構成されています。OpenCVを使えば、これらのピクセル値を簡単に読み取ることができます。ただし、カラー画像はBGRの3つのチャンネルを持っているため、ピクセル値を正確に取得したい場合は、単一チャンネル(シングルチャンネル)として個別に扱う必要があります。 本記事では、まず「cimage」という名前のMat行列に画像を読み込み、cvtColor(cimage, img, COLOR_BGR2GRAY); 関数を使ってグレースケール画像へ変換し、その結果を「img」という名前の行列に格納します。グレースケール化によって画像が単一
-
C++とOpenCVで画像のチャンネル数を取得する方法を解説
この記事では、OpenCVを使って画像のチャンネル数を調べる方法について解説します。プログラムを実行すると、コンソール画面に画像のチャンネル数が表示されます。チャンネル数を取得するには、OpenCVが提供するchannels()メソッドを使用します。このメソッドは、Matクラスのオブジェクト(画像行列)に対して呼び出すことで、その画像のチャンネル数を整数値として返します。例えば、カラー画像の場合は通常3チャンネル(BGR)、グレースケール画像の場合は1チャンネルとなります。画像処理を行う際、扱っている画像がカラーかモノクロかを判別するために、チャンネル数の確認は非常に重要な処理の一つです。以下