如何使用 EmguCV 获取视频文件的帧数?

How to get frames count of a video file with EmguCV?

我正在使用以下代码从视频文件中获取所有帧。但是,当我 运行 示例视频的代码时,double FramesCount1402402 并在帧 # 467.

上弹出错误

P.S 我认为实际帧数约为 467,因为视频文件只有 15 秒(15sec * 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));
}

如何获得准确的帧数?

该代码:

int framecount = (int)Math.Floor(capt.GetCaptureProperty(CapProp.FrameCount)); //get count of frames   
double framerate = capt.GetCaptureProperty(CapProp.Fps); //get fps

如果仍然相关,对我来说效果很好。我有 21,6666667 秒的视频,它 return 我的帧数正确。