Esempio n. 1
0
        public static Bitmap GetMultiImage(Bitmap image, Size partsDim, Size SizePartImageInOut, Size SizeToCompare, Func <LogicAndImage <ImageToCompare, PartImage>, Func <Bitmap> > PartImageFunc, IOrderDispatcher <PartImage> parts)
        {
            Size partSizeInImage;

            PartImage[] partImage = PartImage.GetPartImageDim(image, partsDim, out partSizeInImage);
            Dictionary <PartImage, Func <Bitmap> > BitmapDictionary = new Dictionary <PartImage, Func <Bitmap> >();

            List <(LogicAndImage <ImageToCompare, PartImage> part, Func <Bitmap> bitmapFunc)> x =
                (parts.GetItemWitchOrder(partsDim, partImage).AsParallel().Select(X =>//[pobieranie fragmentów
                                                                                  new LogicAndImage <ImageToCompare, PartImage>()
            {
                Bitmap = X,
                Logic = new ImageToCompare((Bitmap)X, SizeToCompare)
            }
                                                                                  ).ToList().AsParallel(). // Dołączenie do fragmentów danych o wektorach
                 Select(X => (X, PartImageFunc(X))).ToList());                                             //obliczenie najbarddziej podobnych obrazów


            x.ForEach(X => BitmapDictionary.Add(X.part.Bitmap, X.bitmapFunc));
            Bitmap zw = MargeImage(partsDim, SizePartImageInOut, partSizeInImage, partImage, BitmapDictionary);

            return(zw);
        }