0

我需要知道如何正确处理位图,以免出现内存泄漏。我在 BackgroundWorker 中抓取视频并将其分配给 PictureBox,如下所示:

private void bwVideo_ReadCamera(object sender, DoWorkEventArgs e)
{
  Bitmap temp = null;
  while (true)
  {
    Image<Bgr, Byte> frame = logitec.QueryFrame();
    if (temp != null)
      temp.Dispose();
    temp = frame.ToBitmap();
    pictureBox2.Image = temp;
   }
}

问题是我仍然得到这个代码的“内存不足异常”。我尝试使用 BackgroundWorker ReportProgress 释放 pictureBox2.Image 变量,并在上面的代码中等待 dispose 完成(您需要与 gui 同步才能在 PictureBox 图像上调用 dispose)。我还尝试使用在 Image 和 Bitmap 之间共享数据的 Image 类的“Bitmap”属性。

所以我的问题是,在这种情况下,处理我的图像的正确方法是什么?

4

1 回答 1

0

您的声明可能应该有一个 using 语句Image<Bgr, Byte>。请参阅文档

于 2013-02-21T16:15:02.093 回答