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を使って線を描画する方法
OpenCVで線を描画するには、始点と終点の2つの座標が必要です。さらに、線を描くためのキャンバス(描画領域)も用意しなければなりません。線を描画するために必要な要素OpenCVでは、キャンバスとして機能するのが行列(Mat)です。この行列に対して、線の始点と終点を定義し、加えて以下の情報も指定します。線の色線の太さつまり、OpenCVで線を描くには、行列・2つの点・色・線の太さという4つの要素を宣言しておく必要があります。必要なヘッダーファイルOpenCVで線を描画するには、<imgproc.hpp>ヘッダーをインクルードします。これは、line()関数がこのヘッダー内で定義され
-
C++とOpenCVで画像のチャンネル数を取得する方法を解説
この記事では、OpenCVを使って画像のチャンネル数を調べる方法について解説します。プログラムを実行すると、コンソール画面に画像のチャンネル数が表示されます。チャンネル数を取得するには、OpenCVが提供するchannels()メソッドを使用します。このメソッドは、Matクラスのオブジェクト(画像行列)に対して呼び出すことで、その画像のチャンネル数を整数値として返します。例えば、カラー画像の場合は通常3チャンネル(BGR)、グレースケール画像の場合は1チャンネルとなります。画像処理を行う際、扱っている画像がカラーかモノクロかを判別するために、チャンネル数の確認は非常に重要な処理の一つです。以下