2016-11-06 22 views
0

実際、私はC++ opencv 2.4.10を使ってビデオから車両を検出して追跡しようとしています。そうしました。出力ビデオのフレームレートを探したいと思います。誰も私にこのことについてのブログやチュートリアルを教えてもらえますか?C++ opencv 2.4.10を使ってビデオのフレームレートを見つける方法?

ありがとうございます。

+0

私が知っている限り、箱から取り出した神計算機はありませんが、実装するのはかなり簡単です。フレーム間の時間を見積もるだけです。これは、フレーム単位で、またはnフレームごとに行うことができます。次に、画面/コンソールに番号を出力します。見積もりをする際に助けが必要ですか? – Dredok

+0

はい、お願いします...もし私が助けてくれれば、私にとって非常に役立つでしょう... – Avijit

+0

あなたのコードがカメラからのビデオストリームを取得するレートを測定したい、あなたのコードがビデオカメラからディスクファイルにフレームを書き込むレートを測定したい、またはc)ビデオファイル(「mp4」と言う)がすでに記録されていて、そのフレームレートを知りたい場合 –

答えて

2

このようなものが役立ちます。

#include <iostream> 
#include <opencv2/opencv.hpp> //for opencv3 
#include <opencv/cv.hpp> //for opencv2 

int main(int argc, const char * argv[]) { 
    cv::VideoCapture video("video.mp4"); 
    double fps = video.get(cv::CAP_PROP_FPS); 
    std::cout << "Frames per second : " << fps << std::endl; 
    video.release(); 
    return 0; 
} 
+0

ありがとうコメントしています。私はこれを試してみましたが、working.some .dllファイルは見つかりませんでしたか、PDBファイルを開くことができません。 – Avijit

+0

@ user4692891、私は窓に精通していないので、私はあなたを助けることができません。 – Murad

+0

@Muradこれはあなたの質問に対する正解です。あなたはOpenCVを正しくインストールしていないか、OpenCVインクルードファイル(ヘッダー)、ライブラリ(リンカー設定)、またはDLLをどこで見つけられるか、あなたの 'IDE '(Visual Studio? –

0

すべてのビデオ処理を実行するコードにループが必要です。

のは、あなたがこの擬似コードに似た何かを持っているとしましょう:

//code initialization 
cv::VideoCapture cap("some-video-uri"); 

//video capture/processing loop 
while (1) 
{ 
     //here we take the timestamp 
     auto start = std::chrono::system_clock::now(); 
     //capture the frame 
     cap >> frame; 
     //do whatever frame processing you are doing... 
     do_frame_processing(); 
     //measure timestamp again 
     auto end = std::chrono::system_clock::now(); 
     //end - start is the time taken to process 1 frame, output it: 
     std::chrono::duration<double> diff = end-start; 
     std::cout << "Time to process last frame (seconds): " << diff.count() 
        << " FPS: " << 1.0/diff.count()\n"; 
} 

のthatsそれは...フレーム、フレームごとにFPSを計算することは可能性が非常にバリエーションの結果を生成することを考慮に入れます。より少ない変形FPSを得るためには、この結果をいくつかのフレームで平均する必要があります。

関連する問題