anchor.diff:      | White6
       | Black7        
   
  -module WinForms =
  +module DevTools =
  +    open System.IO
       open System.Windows.Forms
  +    open System.Runtime.InteropServices
  +    open OpenCvSharp
  +
  +    let saveMatAsFile (mat:Mat) =
  +        let path = Path.Combine(@"C:\Users\James\Documents\tmp", DateTime.Now.ToString("MM-dd-HH-mm-ss") + ".png")
  +        mat.SaveImage(path)
   
       let showMatInWinForm mat =
           let pictureBox =
  
positive.code:         Async.StartAsTask (loop [] iframeRect) |> ignore
  
      let testing () =
          //failing attempt to get it to load native dlls when running in F# Interactive
          System.Environment.CurrentDirectory <- @"C:\repos\oss\abbeyroad\AbbeyRoad\bin\Debug"
  
          BrowserAutomation.start ()
          let iframeRect = BrowserAutomation.iframeRect()
          let screenshot = BrowserAutomation.screenshot()
          let webcamImage = ImageProcessing.cropWebcamImage screenshot iframeRect
          let x = ImageProcessing.createMaskedPolygon webcamImage (ImageProcessing.keys.[0]).Points
          WinForms.showMatInWinForm(x)        
  
      [<EntryPoint>]
      let main argv = 
  
negative.code:         let form = new Form(Width = 800, Height = 600)
          form.Controls.Add(pictureBox)
          System.Windows.Forms.Application.Run(form)
       
      [<DllImport("Kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)>]
      extern IntPtr LoadLibrary(string lpFileName);
  
  //FIXME lots of OpenCV types are IDisposable, possibly eats memory at the moment
  module ImageProcessing =   
      open Microsoft.FSharp.Reflection
      open OpenCvSharp    
  
      type Key = { Label: Note; Points: Point[] }
  
  