我想使用 absdiff() 函数来跟踪对象,我必须得到第二帧。
例如,我使用 capture.queryframe(2134) 获取第 2134 帧。我需要获得第 2135 帧。
我怎样才能做到这一点?
谢谢。
我想使用 absdiff() 函数来跟踪对象,我必须得到第二帧。
例如,我使用 capture.queryframe(2134) 获取第 2134 帧。我需要获得第 2135 帧。
我怎样才能做到这一点?
谢谢。
首先,如果需要第二帧,最好和图片框分开保存。所以,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
在构造函数或者任何初始化方法中进行初始化,或者直接在你的捕获方法中检查。