Esempio n. 1
0
        private unsafe void testoweToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fsb = new FolderBrowserDialog();

            if (fsb.ShowDialog() == DialogResult.OK)
            {
                DirectoryInfo ds = new DirectoryInfo(fsb.SelectedPath);
                FileInfo[]    fi = ds.GetFiles("*.jpg");
                if (fsb.ShowDialog() == DialogResult.OK)
                {
                    for (int i = 0; i < fi.Length; i++)
                    {
                        Bitmap f = new Bitmap(fi[i].FullName);
                        f = new Bitmap(f, f.Size.Skaluj((float)1 / RozpoznawanieKuponu.StopieńZmiejszenia));
                        byte *Mon = OperacjeNaStrumieniu.PonierzMonohormatyczny(f);
                        bool *Bin = ProgowanieAdaptacyjne.ProgowanieZRamką(Mon, f.Size, Otsu.ZnajdywanieRóźnicyŚrednich(Mon, f.Size), 6, -20, true);
                        int * Mapa;
                        //var Obszary= WstepnePrzygotowanie.ZnajdźOpszary(ref Bin, f.Size.Width, f.Size.Height,out Mapa);
                        //Obszary.Sort();
                        //var Najwiekszy = Obszary[0];
                        //Zw = WstepnePrzygotowanie.PobierzObszar(Bin, Najwiekszy.Miejsce, f.Size);
                        f = WstepnePrzygotowanie.WskaźnikNaObraz(Bin, f.Size);
                        f.Save(fsb.SelectedPath + "\\" + i.ToString() + "zap.bmp");
                        //Marshal.FreeHGlobal((IntPtr)Zw);
                        Marshal.FreeHGlobal((IntPtr)Bin);
                        GC.Collect();
                    }
                }
            }
        }
Esempio n. 2
0
        internal unsafe void Zlepiaj(int *mapaSpójnychObszarów, SiecNeuronowa.ISiećNeuronowa <string> sieć, Size samLoto, bool *obrazKopis, List <ZdjecieZPozycją> listaZdjęć)
        {
            ZaładujObszary(listaZdjęć);
            var    Rzuty  = PobierzRzutY(obrazKopis, new Rectangle(Point.Empty, samLoto), samLoto.Width);
            double Skaler = 255; Skaler /= Rzuty.Max();
            int    Próg   = (int)(ProgowanieGradientowe.ProgójTablice(Rzuty, (int)(samLoto.Height * SkalerByPominąćKrańce)) * SkalerRóznicyNajkrutszyOdNajduszychLinijek);

            bool[] SprogowaneY = Otsu.ProgójTablice(Rzuty, Próg);
            if (!ProgowanieAdaptacyjne.Sprawdź2Modalność(Otsu.PobierzHistogram256(Matematyka.SkalujTablice(Rzuty, Skaler)), (int)(Skaler * Próg), 1.2f))
            {
                return;
            }
            int[] SumaWRzędach = SumaBool(SprogowaneY, PrzypószczalnaWysokość);
            var   Ekrema       = ZnajdźEktremaNajwieksze(SumaWRzędach, PrzypószczalnaWysokość / 2);

            UsuńStycznePoPierszeństwie(Ekrema, PrzypószczalnaWysokość);
#if DEBUG
            ZapiszLinikiY(samLoto, obrazKopis, SprogowaneY, new HashSet <int>(Ekrema), SumaWRzędach);
#endif
            foreach (var item in Ekrema)
            {
                BadajLinike(mapaSpójnychObszarów, samLoto, obrazKopis, listaZdjęć, item);
            }

            DecydujOPrzynależności();
            List <ZdjecieZPozycją>    Dodawane           = ZnajdźNoweObszary(obrazKopis, sieć, samLoto);
            HashSet <ZdjecieZPozycją> ObszaryDoUsuniecia = ZnajdźDoUsuniecia();
            listaZdjęć.RemoveAll(x => ObszaryDoUsuniecia.Contains(x));
            Dodawane.ForEach(x => x.ZlepionaRzutami = true);
            listaZdjęć.AddRange(Dodawane);
#if DEBUG
            ZlepianieRzutami(samLoto, obrazKopis, Dodawane);
#endif
        }