C# OpenCv:u=从视频文件读取帧时出现0异常
我试图从视频文件中获取帧,但在读取帧时,OpenCv:u=正在引发0异常。我正在使用Emgu.Cv dll。 我将代码编写如下:C# OpenCv:u=从视频文件读取帧时出现0异常,c#,emgucv,C#,Emgucv,我试图从视频文件中获取帧,但在读取帧时,OpenCv:u=正在引发0异常。我正在使用Emgu.Cv dll。 我将代码编写如下: private void GetVideoFrames(String Filename) { try { captureFrame = new Capture(Filename); bool Reading = true; while (Reading) { usi
private void GetVideoFrames(String Filename)
{
try
{
captureFrame = new Capture(Filename);
bool Reading = true;
while (Reading)
{
using (frame = captureFrame.QueryFrame().ToImage<Bgr, Byte>())
{
if
if (frame != null)
{
imageBox1.Image = frame;
frameCount++;
}
else
{
Reading = false;
}
}
}
}
private void GetVideoFrames(字符串文件名)
{
尝试
{
captureFrame=新捕获(文件名);
布尔读数=真;
边读
{
使用(frame=captureFrame.QueryFrame().ToImage())
{
如果
如果(帧!=null)
{
imageBox1.图像=帧;
frameCount++;
}
其他的
{
阅读=错误;
}
}
}
}
任何人都可以提供一些帮助。可能是您需要释放内存。例如frame.release();根据我的说法,您应该制作一份从摄像头抓取的帧副本。您可以输入以下代码。它经过测试,没有错误
Capture captureFrame = new Capture(Filename);
Mat frame = new Mat();
Mat frame_copy = new Mat();
//Capture Image from file
private void GetVideoFrames(String Filename)
{
try
{
captureFrame = new Capture(Filename);
captureFrame.ImageGrabbed += ShowFrame;
captureFrame.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
//Show in ImageBox
private void ShowFrame(object sender, EventArgs e)
{
captureFrame.Retrieve(frame);
frame_copy = frame;
imageBox1.Image = frame_copy ;
}
您认为
使用后的if
正确且必要吗?不,这只是一个错误。您可以纠正这一错误,还请提供异常消息和堆栈跟踪