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(); } } } }
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 }