public static Point2f[] CornerSubPix(InputArray image, IEnumerable<Point2f> inputCorners,
Size winSize, Size zeroZone, TermCriteria criteria)
{
if (image == null)
throw new ArgumentNullException(nameof(image));
if (inputCorners == null)
throw new ArgumentNullException(nameof(inputCorners));
image.ThrowIfDisposed();
var inputCornersSrc = EnumerableEx.ToArray(inputCorners);
var inputCornersCopy = new Point2f[inputCornersSrc.Length];
Array.Copy(inputCornersSrc, inputCornersCopy, inputCornersSrc.Length);
using (var vector = new VectorOfPoint2f(inputCornersCopy))
{
NativeMethods.imgproc_cornerSubPix(image.CvPtr, vector.CvPtr, winSize, zeroZone, criteria);
GC.KeepAlive(image);
return vector.ToArray();
}
}
#endregion