我正在尝试从视频文件中获取帧,但在读取帧时,OpenCv:u!= 0异常被抛出。我正在使用Emgu.Cv dll。 我编写的代码如下:
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;
}
}
}
}
有人可以提供一些帮助。
答案 0 :(得分:1)
可能是你需要释放记忆。防爆。 frame.Release();
答案 1 :(得分:0)
根据我的说法,你应该制作一张从相机中抓取的相框。你可以使用以下代码。它经过测试且没有错误。
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 ;
}