示例#1
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedIndex == -1)
            {
                return;
            }
            Linika   Zaznaczony = LinikiWObrazie[listBox1.SelectedIndex];
            Bitmap   kopia      = (Bitmap)KopiaGłówna.Clone();
            Graphics g          = Graphics.FromImage(kopia);

            for (int i = 0; i < Zaznaczony.ListaZZdjeciami.Count; i++)
            {
                g.DrawRectangle(new Pen(Color.Red), Zaznaczony.ListaZZdjeciami[i].Obszar);
                g.DrawRectangle(new Pen(Color.Orange), Zaznaczony.ListaZZdjeciami[i].ObszarInterpolowany);
            }
            if (DomyślnaLinika != null)
            {
                foreach (var item in DomyślnaLinika.CześciLinijek)
                {
                    g.DrawRectangle(new Pen(Color.Blue), new Rectangle(item.ZajmowanyObszar.Location.Dodaj(new Point(0, Zaznaczony.Min)), item.ZajmowanyObszar.Size));
                }
            }
            PrzeglądOdcinków p = new PrzeglądOdcinków(Zaznaczony.ListaZZdjeciami, KopiaGłówna);

            g.Dispose();
            WyślijObraz(kopia);
            p.ShowDialog();
        }
示例#2
0
        private void button2_Click(object sender, EventArgs e)
        {
            Podobieństwa.Clear();
            Linika[] LinikiWObrazieTMP;
            int      MinimalnyPróg = 0;

            if (!int.TryParse(textBox1.Text, out MinimalnyPróg))
            {
                return;
            }
            int IlośćWiekszych = 0;

            foreach (var item in LinikiWObrazie)
            {
                if (item.ListaZZdjeciami.Count >= MinimalnyPróg)
                {
                    IlośćWiekszych++;
                }
            }
            LinikiWObrazieTMP = new Linika[IlośćWiekszych];
            int Pom = LinikiWObrazie.Length;

            while (IlośćWiekszych > 0)
            {
                Pom--;
                if (LinikiWObrazie[Pom].ListaZZdjeciami.Count >= MinimalnyPróg)
                {
                    LinikiWObrazieTMP[--IlośćWiekszych] = LinikiWObrazie[Pom];
                }
            }
            LinikiWObrazie = LinikiWObrazieTMP;
            TwórzNapisyLinijek();
        }
示例#3
0
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listBox1.SelectedIndex < 0)
            {
                return;
            }
            Linika Zaznaczony = LinikiWObrazie[listBox1.SelectedIndex];

            label1.Text = $"średnia to {Zaznaczony.ŚredniaY}";
            label2.Text = $"średnia min to {Zaznaczony.SredniPoczątekY}";
            label3.Text = $"średnia max to {Zaznaczony.SredniKoniecY}";
            if (Podobieństwa.Count != 0)
            {
                label4.Text = $"Podobieństwo to {Podobieństwa[listBox1.SelectedIndex]}";
                LinikaWzgledna LinikaZnaleziona = Zaznaczony.PobierzLinikeWzgledną();

                ObszarWzgledny[] a = DomyślnaLinika.ZNajdźDopoasowanie(LinikaZnaleziona, StałeGlobalne.DopuszalneOdalenieOdWzorca);
                label5.Text = "Wynik dla wiersza " + MałeUproszczenia.ZłoczStringi(DomyślnaLinika.UstalOdpowiednie(a, RozpoznawanieKuponu.DzienikZamian), ",");
                Size R = DoKwadratów.SortowanieWielkości <ZdjecieZPozycją> .ŚredniaWielkośćSrednichWartości(Zaznaczony.ListaZZdjeciami);

                float F = R.Width;
                F          /= R.Height;
                label6.Text = "proporcje X/Y" + F.ToString();
            }
        }
示例#4
0
        public object Clone()
        {
            Linika l = (Linika)MemberwiseClone();
            List <ZdjecieZPozycją> lzp = new List <ZdjecieZPozycją>(l.ListaZZdjeciami.Count);

            lzp.AddRange(l.ListaZZdjeciami);
            l.ListaZZdjeciami = lzp;
            return(l);
        }
示例#5
0
        public bool SprawdźPodobieństwo(Linika a)
        {
            int   WielkośćTego    = RóżnicaŚrednich();
            int   WielkośćTamtego = a.RóżnicaŚrednich();
            int   MniejszaRóźnica = WielkośćTamtego < WielkośćTego ? WielkośćTamtego : WielkośćTego;
            float fx = Matematyka.Styczność2Obiektów(SredniPoczątekY, SredniKoniecY, a.SredniPoczątekY, a.SredniKoniecY);

            fx /= MniejszaRóźnica;
            return(MinPodobieństwoLinijek < fx);
        }
示例#6
0
        private static string WeźLinie(Linika item)
        {
            string s = "";

            foreach (var item2 in item.ListaZZdjeciami)
            {
                s += item2.Tag as string;
            }

            return(s);
        }
        private void SprawdźLinike(Linika Linika, int szerkość)
        {
            List <ZdjecieZPozycją> MniejszaLista = Linika.ListaZZdjeciami;

            for (int i = 0; i < MniejszaLista.Count; i++)
            {
                for (int j = i + 1; j < MniejszaLista.Count; j++)
                {
                    ZdjecieZPozycją ZMniejsze = MniejszaLista[i], ZWiekszej = MniejszaLista[j];
                    if (ZMniejsze.Sąsiedztwo(ZWiekszej))
                    {
                        Graf.PołączenieDwustrone(Obiekty[ZMniejsze].Pomocniczy, Obiekty[ZWiekszej].Pomocniczy);
                    }
                }
            }
        }
示例#8
0
        private void button3_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedIndex == -1)
            {
                return;
            }
            Linika         lk             = LinikiWObrazie[listBox1.SelectedIndex];
            LinikaWzgledna LinikaWzgledna = lk.PobierzLinikeWzgledną();
            XmlSerializer  xs             = new XmlSerializer(typeof(LinikaWzgledna));

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                using (FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create))
                {
                    xs.Serialize(fs, LinikaWzgledna);
                }
            }
        }
        private float ObliczŚredniąWIelkość(Graf <int> item)
        {
            HashSet <Linika> l = new HashSet <Linika>();

            foreach (var a in item.Listuj())
            {
                Linika linika = PaczkiDoGrafu[a].LinikaDoKrótrejNajlerzy;
                if (linika.ListaZZdjeciami.Count > MinimalnaWIelkoścLiniki)
                {
                    l.Add(linika);
                }
            }
            if (l.Count == 0)
            {
                return(0);
            }
            return(l.Average(D => D.ŚredniaWIelkość()));
        }
示例#10
0
 public ZlepianieLiterPoziome(int Szerokość, bool *obraz, ISiećNeuronowa <string> Sieć, Linika lk)
 {
     this.Szerokość  = Szerokość;
     this.Obraz      = obraz;
     this.sieć       = Sieć;
     LinikaZmieniana = lk;
     foreach (var item in lk.ListaZZdjeciami)
     {
         var az = new WystepująceWTymSamymMiejscu();
         az.SpróbujDodać(item);
         w.Add(az);
     }
     foreach (var item in lk.ListaZZdjeciami)
     {
         foreach (var ite in w)
         {
             ite.SpróbujDodać(item);
         }
     }
     w.Sort();
 }
示例#11
0
        public float Styczność(Linika l)
        {
            int Wielkość = Max - Min;

            return(((float)Matematyka.Styczność2Obiektów(Min, Max, l.Min, l.Max)) / Wielkość);
        }
示例#12
0
 public void ScalLinike(Linika a)
 {
     ListaZZdjeciami.AddRange(a.ListaZZdjeciami);
     ListaZZdjeciami.Sort(new DoKwadratów.SortowanieWzgledemX());
 }