我正在使用此代码从连接的相机捕捉短时间的视频:
private void Show() {
if (videoDevice != null) {
videoDevice.VideoResolution = capabilities[comboBox1.SelectedIndex];
size = ((Size) comboBox1.SelectedItem);
videoDevice.NewFrame += new AForge.Video.NewFrameEventHandler(Frame);
videoDevice.Start();
}
}
private void Frame(object sender, NewFrameEventArgs e) {
if (count > 7 && !motion) {
urame = 0;
b = ((Bitmap) e.Frame.Clone());
if (detector.ProcessFrame(b) > 0.02) {
motion = true;
writer.Open(@"C:\Users\Home\Documents\Visual Studio 2013\Projects\CCTV\CCTV\bin\wesdgzufjw3.mp4", size.Width, size.Height, 30, VideoCodec.MSMPEG4v3);
}
}
else if (motion) {
b = ((Bitmap) e.Frame.Clone());
writer.WriteVideoFrame(b);
if (detector.ProcessFrame(b) < 0.02) {
motion = false;
writer.Close();
}
}
count++;
}
但出于某种原因,当检测到动作时,visual studio会抛出一个错误说:
&#34;类型&#39; System.DivideByZeroException&#39;发生在AForge.Video.FFMPEG.dll但未在用户代码&#34;
中处理
我检查了我的代码&#34;坏分区&#34;出于绝望,我已从我的代码中删除了所有算术。我的一个朋友在几个星期前的一个项目中使用了完全相同的lib - AForge.Video.FFMPEG - 并没有遇到任何这样的错误。
问题在于错误并没有说明可能出错的地方..除法可能在lib中,在我使用的方法中,heck,甚至ToString()都必须使用某种划分..
注意:我已经为c ++添加了一个标签,因为1)Aforge主要是用c ++写的,2)在这个错误发生前几分钟我得到一个错误,说VS2013 C#调试器无法调试C ++,并且在C ++中发生了错误