我想在opencvsharp中获取视频文件中的(+1)帧

时间:2014-08-31 11:29:51

标签: c# opencvsharp

我想使用absdiff()函数来跟踪对象,我必须得到第二帧。

例如,我使用capture.queryframe(2134)获取第2134帧。我需要得到第2135帧。

我该怎么做?

感谢。

1 个答案:

答案 0 :(得分:0)

首先,如果您需要第二帧,最好将其与图片框分开保存。所以,而不是pictureBox1.Image = capture.QueryFrame().ToBitmap();我建议做一些像:

Image img = capture.QueryFrame().ToBitmap();
pictureBox1.Image = img;

在分离之后,很容易做到以下几点:

Image prevImage, currentImage; // define as class members or global variables

// and in the capturing method:
prevImage = currentImage;
currentImage = capture.QueryFrame().ToBitmap();
pictureBox1.Image = img;

所以,现在你有两个框架,可以做absdiff或任何你想要的。但是你还有一个问题 - 第一帧。但很明显,在第一帧中找不到任何对象是显而易见的,因此您可以在构造函数或任何初始化方法中初始化currentImage,或者只是在捕获方法中检查它。