从流媒体视频中获取快照(新手)

时间:2011-10-17 15:00:36

标签: c# video-streaming video-processing emgucv

我有一个使用Emgu(OpenCV的.net包装器)编写的视频播放器,我捕获帧并在certan帧上执行一些操作。在功能方面,我让用户拍摄流式视频的快照,并以不同的形式突出显示快照的各个部分。

但是,由于视频播放器正在儿童表单上的图像下面播放,因此当用户在表单上绘制时也会更新。这是不可取的。我很确定这与锁定和解锁的东西有关,我是这个东西的新手。

我出错的任何想法?我原以为 lock(bmpFrame)会阻止任何更新,但它不会:

 private void btnTag_Click(object sender, EventArgs e)
    {
        if (_video != null && _video.CurrentFrame != null)
        {
            try
            {
                using (Bitmap bmpFrame = (Bitmap)_video.CurrentFrame.Bitmap)
                {
                    lock (bmpFrame)
                    {
                        TagForm f = new TagForm(bmpFrame);
                        f.Show();
                    }
                }
            }
            catch { };
        }
    }

1 个答案:

答案 0 :(得分:0)

唉唉!愚蠢的我,这确实是一种疏忽。通过为新位图分配新内存来修复

using (Bitmap bmpFrame = new Bitmap(_video.CurrentFrame.Bitmap)
{

   lock (bmpFrame)
   {
       TagForm f = new TagForm(bmpFrame);
       f.Show();
   }

}