Я использую приведенный ниже код, чтобы получить все кадры из видеофайла. Однако, когда я запускаю код для примера видео, double FramesCount
- 1402402
и выдает сообщение об ошибке в кадре # 467
.Как получить количество кадров видеофайла с помощью EmguCV?
P.S Я думаю, рассчитывать реальные кадры около ~ 467, так как видео файл только 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));
}
Как я могу получить рассчитывать точные кадры?
В моем случае (OP) 'FramesCount' был очень высоким, но я все равно выполняю цикл, и я заполняю как можно больше' QueryGrayFrame' в 'FramesArray', и как только он выдает ошибку (без кадров больше, кроме цикла все еще происходит с тех пор, как FramesCount был выше фактических кадров), я просто игнорирую его и приступаю к использованию «FramesArray», который имеет все кадры видео. –