public WriteableBitmap ToWriteableBitmap()
 {
     using (Mat m = this.Mat)
     {
         return(m.ToWritableBitmap());
     }
 }
 public static WriteableBitmap ToWriteableBitmap <TColor, TDepth>(this Image <TColor, TDepth> image)
     where TColor : struct, IColor
     where TDepth : new()
 {
     using (Mat m = image.Mat)
     {
         return(m.ToWritableBitmap());
     }
 }
       /// <summary>
        /// Populates the page with content passed during navigation. Any saved state is also
        /// provided when recreating a page from a prior session.
        /// </summary>
        /// <param name="sender">
        /// The source of the event; typically <see cref="NavigationHelper"/>.
        /// </param>
        /// <param name="e">Event data that provides both the navigation parameter passed to
        /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested and
        /// a dictionary of state preserved by this page during an earlier
        /// session.  The state will be null the first time a page is visited.</param>
        private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
        {
            // TODO: Create an appropriate data model for your problem domain to replace the sample data
            var item = await SampleDataSource.GetItemAsync((string)e.NavigationParameter);
            this.DefaultViewModel["Item"] = item;
           if (item.Title.Equals("Run Hello World"))
           {
              Mat img = new Mat(200, 400, DepthType.Cv8U, 3);
              img.SetTo(new MCvScalar(255, 0, 0));
              CvInvoke.PutText(img, "Hello world.", new System.Drawing.Point(10, 80), FontFace.HersheyComplex, 1.0, new MCvScalar(0, 255, 0));

              ImageView.Source = img.ToWritableBitmap();
           } else if (item.Title.Equals("Run Planar Subdivision"))
           {
              Mat img = PlanarSubdivisionExample.DrawSubdivision.Draw(400, 30);
              ImageView.Source = img.ToWritableBitmap();
           } else if (item.Title.Equals("Run Face Detection"))
           {
              Mat img = await LoadImage(@"Assets\Images\lena.jpg");

              List<Rectangle> faces = new List<Rectangle>();
              List<Rectangle> eyes = new List<Rectangle>();
              long detectionTime;
              FaceDetection.DetectFace.Detect(img, "haarcascade_frontalface_default.xml", "haarcascade_eye.xml",
                 faces, eyes, false, false, out detectionTime);

              foreach (Rectangle face in faces)
                 CvInvoke.Rectangle(img, face, new Bgr(0, 0, 255).MCvScalar, 2);
              foreach (Rectangle eye in eyes)
                 CvInvoke.Rectangle(img, eye, new Bgr(255, 0, 0).MCvScalar, 2);
              ImageView.Source = img.ToWritableBitmap();
            
           } else if (item.Title.Equals("Run Pedestrian Detection"))
           {
              Mat img = await LoadImage(@"Assets\Images\pedestrian.png");
              Mat gray = new Mat();
              CvInvoke.CvtColor(img, gray, ColorConversion.Bgr2Gray);
              long detectionTime;
              Rectangle[] pedestrians = PedestrianDetection.FindPedestrian.Find(gray, false, false, out detectionTime);
              foreach (Rectangle pedestrian in pedestrians)
              {
                 CvInvoke.Rectangle(img, pedestrian, new MCvScalar(0, 0, 255) );
              }
              ImageView.Source = img.ToWritableBitmap();
           }
        }