コード例 #1
0
 public AutoConfigureContainer(string folderPath, BackgroundStrippingParams backgroundStrippingParams, Color backgroundColor)
 {
     InitializeComponent();
     AutoConfigureControl.AutoConfigured += InvokeAutoConfiguredEvent;
     AutoConfigureControl.Initialize(folderPath, backgroundStrippingParams, backgroundColor);
     Loaded += AutoConfigureContainerLoaded;
 }
コード例 #2
0
 private void ResetValues()
 {
     _folderPath  = null;
     _clickInputs = null;
     _modelMeshAndPositionNeighbors = null;
     _createMeshContract            = null;
     _firstImageFilePath            = null;
     _backgroundStrippingParams     = null;
     _meshDensity = null;
 }
コード例 #3
0
        public void Initialize(string folderPath, BackgroundStrippingParams backgroundStrippingParams, Color backgroundColor)
        {
            _folderPath = folderPath;
            _backgroundStrippingParams = backgroundStrippingParams;
            _backgroundColor           = backgroundColor;
            var firstImgPath = GetImageFilesHelper.GetImageFilesFromLocation(folderPath)[0];

            ImageCanvas.SetImage(firstImgPath);
            ClickHelpImage.Source = new BitmapImage(new Uri("ClickInputs/7.png", UriKind.Relative));
        }
コード例 #4
0
 public static void StripBackground(Bitmap image, BackgroundStrippingParams @params)
 {
     if (@params.ScreenBasedParams != null)
     {
         ScreenBasedStripper.Process(image, @params.ScreenBasedParams, GetColor(@params.BackgroundColor));
     }
     else if (@params.ColorVariationBasedParams != null)
     {
         ColorVariationPercentBasedStripper.Process(image,
                                                    @params.ColorVariationBasedParams.VariationPercent,
                                                    GetColor(@params.BackgroundColor),
                                                    GetColor(@params.ColorVariationBasedParams.CompareColor));
     }
 }
        public void TestColorVariationPercentBasedStripperWithMyPhotoImage()
        {
            const string inputFileName  = @"\MyPhoto.jpg";
            const string outputFileName = @"\TestColorVariationPercentBasedStripperWithMyPhotoImage.png";

            var sourceImagePath = ExecutionDirInfoHelper.GetInputDirPath() + inputFileName;
            var bitmap          = (Bitmap)Image.FromFile(sourceImagePath);
            var backgroundColor = new SerializableColor(200, 200, 200);

            var @params = new BackgroundStrippingParams
            {
                BackgroundColor           = backgroundColor,
                ColorVariationBasedParams = new ColorVariationBasedParams
                {
                    VariationPercent = 10,
                    CompareColor     = GetColor(bitmap.GetPixel(0, 0))
                }
            };

            BackgroundStripper.StripBackground(bitmap, @params);

            var @params1 = new BackgroundStrippingParams
            {
                BackgroundColor           = backgroundColor,
                ColorVariationBasedParams = new ColorVariationBasedParams
                {
                    VariationPercent = 5,
                    CompareColor     = GetColor(bitmap.GetPixel(626, 1802))
                }
            };

            BackgroundStripper.StripBackground(bitmap, @params1);

            var @params2 = new BackgroundStrippingParams
            {
                BackgroundColor           = backgroundColor,
                ColorVariationBasedParams = new ColorVariationBasedParams
                {
                    VariationPercent = 5,
                    CompareColor     = GetColor(bitmap.GetPixel(549, 1750))
                }
            };

            BackgroundStripper.StripBackground(bitmap, @params2);

            var targetPath = ExecutionDirInfoHelper.GetOutputDirPath() + outputFileName;

            bitmap.Save(targetPath);
        }
コード例 #6
0
        private static Bitmap GetRotatedCroppedResizedAndStrippedImage(BackgroundStrippingParams strippingParams, ImageClickInputDetails clickInput, ImageAlterationParams imageAlterationParams)
        {
            //pickup image from the source location
            var image = (Bitmap)Image.FromFile(String.Format(@"{0}\{1}", imageAlterationParams.ImageFolder, clickInput.ImageName));

            //rotate
            image = MainProcessor.RotateImg(image, (float)clickInput.RotateImageBy, imageAlterationParams.InvalidColor);

            //crop
            image = ImageCropper.GetCroppedImage(clickInput, image, imageAlterationParams);

            //resize
            image = ImageResizer.ResizeImage(image, imageAlterationParams);

            //strip background
            BackgroundStripper.StripBackground(image, strippingParams);

            return(image);
        }
コード例 #7
0
        public static ImageParams GetImageParams(double variationIn3DCoordinates, BackgroundStrippingParams strippingParams, ImageClickInputDetails clickInput, double angle, ImageAlterationParams imageAlterationParams)
        {
            var imageData = GetRotatedCroppedResizedAndStrippedImage(strippingParams, clickInput, imageAlterationParams);

            //get camera ratio
            var cameraRatio = GetCamRatio(imageData, variationIn3DCoordinates);

            var cameraLocationPt = GetCamPos(variationIn3DCoordinates * 4.0, angle, 0.0);
            var lookingAtPt      = GetCamDir(angle, 0.0, 0.0);

            return(new ImageParams
            {
                InvalidColor = imageAlterationParams.InvalidColor,
                Image = imageData,
                CameraAtInfinity = true,
                cameraLocation = cameraLocationPt,
                lookingAt = lookingAtPt,
                CameraRatio = cameraRatio
            });
        }
        private static void RunTest(string inputFileName, string outputFileName, int variationPercent, Point imgLocationOfBaseColor)
        {
            var sourceImagePath = ExecutionDirInfoHelper.GetInputDirPath() + inputFileName;
            var bitmap          = (Bitmap)Image.FromFile(sourceImagePath);
            var backgroundColor = new SerializableColor(200, 200, 200);

            var @params = new BackgroundStrippingParams
            {
                BackgroundColor           = backgroundColor,
                ColorVariationBasedParams = new ColorVariationBasedParams
                {
                    VariationPercent = variationPercent,
                    CompareColor     = GetColor(bitmap.GetPixel(imgLocationOfBaseColor.X, imgLocationOfBaseColor.Y))
                }
            };

            BackgroundStripper.StripBackground(bitmap, @params);

            var targetPath = ExecutionDirInfoHelper.GetOutputDirPath() + outputFileName;

            bitmap.Save(targetPath);
        }
コード例 #9
0
        private void SetStripBackgroundParams(BackgroundStrippingParams @params)
        {
            _backgroundStrippingParams = @params;

            if (_stripBackgroundContainer != null)
            {
                BaseGrid.Children.Remove(_stripBackgroundContainer);
                _stripBackgroundContainer = null;
            }

            //check if click inputs can be deserialized from file
            var filePath     = GetClickInputsFilePath(_folderPath);
            var deserialized = XmlSerializerHelper.Deserialize <ClickInputs>(filePath);

            if (deserialized != null)
            {
                SetClickInputs(deserialized);
            }
            else
            {
                DisplayClickCanvasContainer(_clickInputs);
            }
        }
コード例 #10
0
        public void TestStripBackground()
        {
            const string dinosaur        = @"\dinosaur.jpg";
            var          sourceImagePath = _sourceDirPath + dinosaur;
            var          bitmap          = (Bitmap)Image.FromFile(sourceImagePath);
            var          backgroundColor = new SerializableColor(200, 200, 200);

            var classicStripperParams = new BackgroundStrippingParams
            {
                ScreenBasedParams = new ScreenBasedParams
                {
                    ScreenColorTypes = ScreenColorTypes.BlueScreen,
                    MaxDiffPercent   = 40,
                    MinColorOffset   = 40
                },
                BackgroundColor = backgroundColor
            };

            BackgroundStripper.StripBackground(bitmap, classicStripperParams);

            var targetPath = _outputDirPath + dinosaur;

            bitmap.Save(targetPath);
        }
コード例 #11
0
        public StripBackgroundContainer(string testImageFilePath, Color invalidColor, BackgroundStrippingParams currentParams)
        {
            _invalidColor = invalidColor;
            InitializeComponent();

            SliderForOffSet.Slider.Minimum = 10;
            SliderForOffSet.Slider.Maximum = 255;
            SliderForOffSet.Label.Text     = "Minimum offset";
            SliderForOffSet.Slider.Value   = 25;

            SliderForMaxDiff.Slider.Minimum = 0;
            SliderForMaxDiff.Slider.Maximum = 100;
            SliderForMaxDiff.Label.Text     = "Max diff between other 2 colors";
            SliderForMaxDiff.Slider.Value   = 100;

            SliderForOtherColor.Slider.Minimum = 0;
            SliderForOtherColor.Slider.Value   = 10;
            SliderForOtherColor.Slider.Maximum = 50;
            SliderForOtherColor.Label.Text     = "Allowed variation percent";
            SliderForOtherColor.ToolTip        = "Allowed variation in the color at the top left corner of the image";

            ComboBoxForScreenColor.SelectedIndex = 0;

            SetImage(testImageFilePath);

            //set current values
            if (currentParams != null && currentParams.ColorVariationBasedParams != null)
            {
                ComboBoxForScreenColor.SelectedIndex = 3;
                SliderForOtherColor.Slider.Value     = currentParams.ColorVariationBasedParams.VariationPercent;
            }
            else if (currentParams != null && currentParams.ScreenBasedParams != null)
            {
                SliderForOffSet.Slider.Value  = currentParams.ScreenBasedParams.MinColorOffset;
                SliderForMaxDiff.Slider.Value = currentParams.ScreenBasedParams.MaxDiffPercent;
                switch (currentParams.ScreenBasedParams.ScreenColorTypes)
                {
                case ScreenColorTypes.BlueScreen:
                    ComboBoxForScreenColor.SelectedIndex = 1;
                    break;

                case ScreenColorTypes.RedScreen:
                    ComboBoxForScreenColor.SelectedIndex = 2;
                    break;

                default:
                    ComboBoxForScreenColor.SelectedIndex = 0;
                    break;
                }
            }
            SetSliderDisplayBasedOnScreenType();
            this.Loaded += OnLoad;
        }
コード例 #12
0
 public static void StripBackground(Bitmap bitmap, BackgroundStrippingParams @params)
 {
     BackgroundStripper.StripBackground(bitmap, @params);
 }