我的验证(区域)很慢

时间:2013-11-28 13:04:53

标签: c# image-processing

我有一个WinForm C#应用程序。它会在UserControl事件的onpaint上显示尺寸为720x360像素的图片。

我不断地将当前图像与每1/10秒的新图像进行比较。

我一直在使用Validate()强制onpaint事件重绘新图片。

我决定做的是Invalidate并传递区域。

因此,我将当前图像与新图像进行比较。寻找差异。创建一个新的矩形对象,然后使用Union方法添加新图像。

这是我的代码:

//我使用EMGU比较2张图片。

Image<Bgr, byte> _diffBetweenCurrentAndPrevious = newImage.AbsDiff(currentFrame);

//我通过结果图像枚举列出超出阈值的差异。

for (int y = 0; y < 576; y++)
{                  
   for (int x = 0; x < 720; x++)
   {
      //if beyond a threshold then note it
      motionRegions.Union(new Rectangle(x, y, 1, 1));
   }
}

我分配了新图片:

newImage =(Bitmap) currentFrame.Clone();
然后我打电话给:

Invalidate(motionRegions);

这将称之为:

protected override void OnPaint(PaintEventArgs pe)
{       
    Graphics g = pe.Graphics;
    if (newImage != null)
    {
        pe.Graphics.DrawImageUnscaled(newImage, 0, 0);
    }
}

问题是当重新绘制我需要重绘的内容时,我似乎没有改善响应时间/ RAM。

我做错了吗?

由于

0 个答案:

没有答案