public static void DrawKeypoints(Mat image, IEnumerable<KeyPoint> keypoints, Mat outImage,
Scalar? color = null, DrawMatchesFlags flags = DrawMatchesFlags.Default)
{
if (image == null)
throw new ArgumentNullException(nameof(image));
if (outImage == null)
throw new ArgumentNullException(nameof(outImage));
if (keypoints == null)
throw new ArgumentNullException(nameof(keypoints));
image.ThrowIfDisposed();
outImage.ThrowIfDisposed();
KeyPoint[] keypointsArray = EnumerableEx.ToArray(keypoints);
Scalar color0 = color.GetValueOrDefault(Scalar.All(-1));
NativeMethods.features2d_drawKeypoints(image.CvPtr, keypointsArray, keypointsArray.Length,
outImage.CvPtr, color0, (int)flags);
}