2016-07-10 2 views
-1

私はVideoCaptureを持っています、そして、私はオブジェクト検出などのいくつかのアクションを実行しています。今、私は、オブジェクトが検出されたときなど、特定の時間にビデオの経過時間を取得する段階に達しました。経過時間を取得する最も信頼性の高い方法は何ですか?ビデオの経過時間を取得します

重要なことは、ビデオがFPSドロップにより元の速度で動作していないことです。これは、何らかの画像処理を行っているためです。問題は、処理されたビデオの時間を取得してから、ビデオ信号の時間を追跡できるようにすることです。同じシーケンスにする必要があります。 (例:私は05:30の時間を得ます、そしてそれはVLCの05:30に行くなら元のビデオの同じ場所にあるはずです)。

私は説明が十分明確であることを願っています。私はさまざまなオプションをCV_CAPしようとしましたが、私はどのように時間を得ることができません。すべてヘルプが非常にを高く評価している

if (this) 
    Get time elapsed 

の任意のアイデアや:これの使い方は次のようになります!

+0

これはリアルタイムで起こっているのですか、元のフレームレートから完全に独立して発生するビデオの後処理ですか? – kfsone

+0

後処理。 –

答えて

2

元のFPSレートと現在のフレーム番号を知っていれば、それは簡単です:elapsed_time_in_seconds = frame_number/original_fps

0

OpenCVは、ビデオファイルのコーデックに関係なく、ビデオをそのフレームにデコードします。それを担当するモジュールはffmpegです.ffmpegは混乱しており、研究内容の画像処理の範囲外です。私が意味するのは、OpenCVはCODECの実際のfpsを得ることができないかどうか気にしないということです。結果として、あなたが求めているタイミングを得るための保証された方法はありません。 @Jesperが述べたように、original_fps(これは一定の数値です)で幸運を取るようにしてください。動画にはさまざまなFPSがあるかもしれません。たとえば、ライブストリーミングビデオは利用可能なネットワーク帯域幅に応じてfpsを変更して追いつきます。

これはばかげているかもしれませんが、OpenCVで時間を推論する最も信頼できる方法は、実際にビデオキャプチャ中にフレームにタイムスタンプをハードプリントすることです。

ソフトウェアの前提条件や要件を設定することもできます。例えば。ビデオ入力は一定の30FPSでなければならない。

最後に他のすべての機能と同様に、時間表示にフレーム番号を使用します。

関連する問題