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



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

但是,由于视频播放器在子窗体上播放,因此当用户在窗体上绘图时,子窗体上的图像也会更新。这是不可取的。我很确定这与我的锁和锁的东西有关,我是一个新手。

你知道我哪里错了吗?我本以为锁(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 { };
        }
    }

啊哈!我真傻,这确实是个疏忽。修复了为新位图分配新内存的问题

using (Bitmap bmpFrame = new Bitmap(_video.CurrentFrame.Bitmap)
{
   lock (bmpFrame)
   {
       TagForm f = new TagForm(bmpFrame);
       f.Show();
   }
}

最新更新