/// <summary> /// /// </summary> /// <param name="clusterCount"></param> /// <param name="termcrit"></param> /// <param name="attempts"></param> /// <param name="flags"></param> public BOWKMeansTrainer(int clusterCount, TermCriteria?termcrit = null, int attempts = 3, KMeansFlags flags = KMeansFlags.PpCenters) { var termCritValue = termcrit.GetValueOrDefault(new TermCriteria()); ptr = NativeMethods.features2d_BOWKMeansTrainer_new(clusterCount, termCritValue, attempts, (int)flags); }
internal static extern int cvKMeans2( Arr samples, int cluster_count, Arr labels, TermCriteria termcrit, int attempts, ref ulong rng, KMeansFlags flags, Arr _centers, out double compactness);
/// <summary> /// clusters the input data using k-Means algorithm /// </summary> /// <param name="data"></param> /// <param name="k"></param> /// <param name="bestLabels"></param> /// <param name="criteria"></param> /// <param name="attempts"></param> /// <param name="flags"></param> /// <param name="centers"></param> /// <returns></returns> public static double Kmeans(InputArray data, int k, InputOutputArray bestLabels, TermCriteria criteria, int attempts, KMeansFlags flags, OutputArray centers = null) { if (data == null) throw new ArgumentNullException("data"); if (bestLabels == null) throw new ArgumentNullException("bestLabels"); data.ThrowIfDisposed(); bestLabels.ThrowIfDisposed(); double ret = NativeMethods.core_kmeans(data.CvPtr, k, bestLabels.CvPtr, criteria, attempts, (int)flags, ToPtr(centers)); bestLabels.Fix(); if(centers != null) centers.Fix(); GC.KeepAlive(data); return ret; }
/// <summary> /// /// </summary> /// <param name="clusterCount"></param> /// <param name="termcrit"></param> /// <param name="attempts"></param> /// <param name="flags"></param> public BOWKMeansTrainer(int clusterCount, TermCriteria? termcrit = null, int attempts = 3, KMeansFlags flags = KMeansFlags.PpCenters) { var termCritValue = termcrit.GetValueOrDefault(new TermCriteria()); ptr = NativeMethods.features2d_BOWKMeansTrainer_new(clusterCount, termCritValue, attempts, (int)flags); }