2017-02-21 11 views
0

以下のコードを使用して、ビデオファイルからすべてのフレームを取得しています。ただし、サンプルビデオのコードを実行すると、double FramesCount1402402になり、フレーム#467にエラーが表示されます。EmguCVでビデオファイルのフレーム数を取得する方法は?

P.Sは、私は本当のフレームは、ビデオファイルはわずか15秒(15秒* 30fpsの=〜450のフレーム)

_capture = new Capture(OpenFile.FileName); 
FramesCount = (int)_capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_COUNT); 

for(int i = 0; i < FramesCount - 1; i++) 
{ 
    FramesArray.Add(_capture.QueryGrayFrame().Resize(ImageWidth, ImageHeight, Emgu.CV.CvEnum.INTER.CV_INTER_LINEAR)); 
} 

がどのように正確なフレームを数える得ることができているので、周り〜467で数えると思いますか?

答えて

1

このコード:

int framecount = (int)Math.Floor(capt.GetCaptureProperty(CapProp.FrameCount)); //get count of frames 
double framerate = capt.GetCaptureProperty(CapProp.Fps); //get fps 
まだ関連なら、私のために正常に動作します

。私は21,6666667秒のビデオのように持っていて、それは私にフレームの右のカウントを返します。

+0

私の場合(OP)、 'FramesCount'は非常に高かったですが、とにかくループを実行し、できるだけたくさんの' QueryGrayFrame'を 'FramesArray'に取り込み、一度エラーをポップするとFramesCountが実際のフレームよりも高いので、まだ動き出しています)、私はそれを無視して、ビデオのすべてのフレームを持つ 'FramesArray'を使用します。 –

関連する問題