1

我正在开发检测视频文件中运动的应用程序。我想通过以下方式做到这一点:

  1. 从硬盘读取视频。
  2. 将其转换为帧或图像数组(例如位图数组)。
  3. 对帧进行一些处理,包括通过减法检测运动。
  4. 将处理后的图像保存为视频文件。
  5. 在表单上播放该视频文件。

我在谷歌上找到了将视频转换为图像数组的好方法。但搜索后我认为使用 FFMPEG 读取和转换视频。因为我使用 C#,所以我尝试使用 AForge。

有关该课程的信息链接http://www.aforgenet.com/framework/docs/html/47582d8a-2eeb-03cf-03d5-de3e745a8a34.htm

当我尝试使用 VideoFileSource 类重新读取视频并将其显示在图片框中时,我的问题出现了。但是当我尝试运行程序时,参数无效出现在

Application.Run(new Form1());

我的代码::

public partial class Form1 : Form    
{
  System.Windows.Forms.Timer timer;
  string fileName;
  VideoFileSource videoSource;
  Thread myThread;
  public Form1()
  {
     InitializeComponent();
  }
    private void Form1_Load(object sender, EventArgs e)
  {
     OpenFileDialog openFiel = new OpenFileDialog();
     if (openFiel.ShowDialog() == DialogResult.OK)
     {
        fileName = openFiel.FileName;
     }

     // create video source
     videoSource = new VideoFileSource(fileName);
     // set NewFrame event handler
     videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame);
     // start the video source
     videoSource.Start();
  }


  // New frame event handler, which is invoked on each new available video frame
  private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
  {
     // get new frame
     Bitmap bitmap = eventArgs.Frame;
     pictureBox1.Image = bitmap;
     // process the frame
  }     
  private void button1_Click(object sender, EventArgs e)
  {

  }

}

4

1 回答 1

4

遇到了同样的问题。我发现使用

(Bitmap)eventArgs.Frame.Clone() 

解决问题:)

于 2013-07-15T21:41:01.847 回答