/// <summary>
 /// Find the good features to track
 /// </summary>
 /// <param name="image">The input image</param>
 /// <param name="corners">The output corners</param>
 /// <param name="mask">Optional mask</param>
 /// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
 public void Detect(IInputArray image, IOutputArray corners, IInputArray mask = null, Stream stream = null)
 {
     using (InputArray iaImage = image.GetInputArray())
         using (OutputArray oaCorners = corners.GetOutputArray())
             using (InputArray iaMask = (mask != null ? mask.GetInputArray() : InputArray.GetEmpty()))
                 CudaInvoke.cudaCornersDetectorDetect(_ptr, iaImage, oaCorners, iaMask, stream);
 }
 /// <summary>
 /// Find the good features to track
 /// </summary>
 public void Detect(GpuMat image, GpuMat corners, GpuMat mask = null)
 {
     CudaInvoke.cudaCornersDetectorDetect(_ptr, image, corners, mask);
 }