メモリが限界に達し、アプリケーションが動作を停止しました。タイマーで Runcamera を呼び出しました。解像度は 640*480 ですが、1920*1080 では問題があります。私は何が欠けていますか?
public void RunCamera()
{
imgWeb.Visibility = Visibility.Visible;
capture1.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH, 1920);
capture1.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT, 1080);
currentFrame = capture1.QueryFrame();
imgWeb.Source = ToBitmapSource(currentFrame);
}
以下の ToBitmapSource 定義
public static BitmapSource ToBitmapSource(IImage image)
{
BitmapSource bs = null;
using (System.Drawing.Bitmap source = image.Bitmap)
{
try
{
IntPtr ptr = source.GetHbitmap(); //obtain the Hbitmap
bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
ptr,
IntPtr.Zero,
Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
DeleteObject(ptr); //release the HBitmap
}
catch (Exception ex)
{
GC.Collect();
GC.WaitForFullGCComplete();
}
return bs;
}
}