コード例 #1
0
        private void btn_Start_Click(object sender, EventArgs e)
        {
            Color[] cluster = new Color[Colors.Count];
            for (int i = 0; i < cluster.Length; i++)
            {
                cluster[i] = Colors[i].ToColor();
            }
            Algorithm.ML.KMeans.BitmapClustering means = new Algorithm.ML.KMeans.BitmapClustering(cluster);
            Algorithm.ML.KMeans.ProgressState    pr    = new Algorithm.ML.KMeans.ProgressState();
            Task t = Task.Run(() =>
            {
                means.Teach((Bitmap)pb_Source.Image, ref pr);

                Bitmap image = means.Compute((Bitmap)pb_Source.Image);
                this.Invoke((Action)(() =>
                {
                    pb_Cluster.Image = image;
                }));
            }
                              );


            while (t.IsCompleted == false)
            {
                if (ob_Progress.Value < ob_Progress.Maximum)
                {
                    ob_Progress.Value++;
                }
                else
                {
                    ob_Progress.Value = 0;
                }
                Application.DoEvents();
            }



            for (int i = 0; i < means.Clusters.Length; i++)
            {
                ColorBuffer buffer = new ColorBuffer();
                buffer.FromColor(means.Clusters[i]);
                Colors[i]         = buffer;
                lb_Color.Items[i] = buffer;
            }
            ob_Progress.Value = 0;
        }
コード例 #2
0
        private void btn_FromImageColor_Click(object sender, EventArgs e)
        {
            Random      rnd    = new Random();
            Bitmap      source = (Bitmap)pb_Source.Image;
            int         x      = rnd.Next(0, source.Width);
            int         y      = rnd.Next(0, source.Height);
            Color       color  = source.GetPixel(x, y);
            ColorBuffer buffer = new ColorBuffer();

            buffer.FromColor(color);
            Colors.Add(buffer);
            lb_Color.Items.Add(buffer);

            if (lb_Color.Items.Count > 0 && pb_Source.Image != null)
            {
                btn_Start.Enabled = true;
            }
            else
            {
                btn_Start.Enabled = false;
            }
        }