private void DirectionToFile_Click(object sender, RoutedEventArgs e) { if (_currentImage == null) { return; } Stopwatch performanceCounter = new Stopwatch(); performanceCounter.Start(); CanvasARGB canvas = Get_ProgressOrOrigInput(); CanvasPixel canvasPixel = CanvasPixel.CreateBitmpaFromCanvas(canvas); CanvasEdgeVO canvasEdges = CanvasEdgeVO.CreateEdgesFromCanvas(canvasPixel); EdgeDetector.EdgeReducer(canvasEdges, 255); EdgesWriteToFile(canvasEdges, "directions3.txt"); CanvasPixel evisualise = VisualiseDetectedEdges(canvasEdges); _lastImage = CanvasPixel.CreateBitmpaFromCanvas(evisualise); performanceCounter.Stop(); Helper_SetAppTitle(string.Format("{0,000} s ", performanceCounter.Elapsed.TotalSeconds)); ShowImage(false); }
private void MenuSave_Click(object sender, RoutedEventArgs e) { var ofd = new Microsoft.Win32.SaveFileDialog() { Filter = "*.*|*.*|PNG Files (*.png)|*.png" }; var result = ofd.ShowDialog(); if (result == false) { return; } string fileForSave = ofd.FileName; BitmapSource bitmapSource = CanvasARGB.CreateBitmpaFromCanvas(_currentImage); FileStream stream = new FileStream(fileForSave, FileMode.Create); PngBitmapEncoder encoder = new PngBitmapEncoder(); encoder.Interlace = PngInterlaceOption.On; encoder.Frames.Add(BitmapFrame.Create(bitmapSource)); encoder.Save(stream); stream.Dispose(); }
private void Button_Click_41(object sender, RoutedEventArgs e) { if (_currentImage == null) { return; } int inputNumber = int.Parse(NumberInput.Text); Stopwatch performanceCounter = new Stopwatch(); performanceCounter.Start(); CanvasARGB canvas = Get_ProgressOrOrigInput(); CanvasPixel tmpCanvasPixel = CanvasPixel.CreateBitmpaFromCanvas(canvas); ColorReductor cr = new ColorReductor(); cr.ReduceByMask(tmpCanvasPixel, inputNumber); _lastImage = CanvasPixel.CreateBitmpaFromCanvas(tmpCanvasPixel); performanceCounter.Stop(); Helper_SetAppTitle(string.Format("{0,000} s ", performanceCounter.Elapsed.TotalSeconds)); ShowImage(false); }
private void CollorToGray_Click(object sender, RoutedEventArgs e) { if (_currentImage == null) { return; } int inputNumber = int.Parse(NumberInput.Text); Stopwatch performanceCounter = new Stopwatch(); performanceCounter.Start(); CanvasARGB canvas = Get_ProgressOrOrigInput(); CanvasPixel canvasPixel = CanvasPixel.CreateBitmpaFromCanvas(canvas); ColorToGrey ctg = new ColorToGrey(); Array2D matrix = ctg.CreateColloredMatrix(canvasPixel.Width, canvasPixel.Height, inputNumber); CanvasPixel resultCanvas = ctg.CreateColoredGreyScale(canvasPixel, matrix); _lastImage = CanvasPixel.CreateBitmpaFromCanvas(resultCanvas); performanceCounter.Stop(); Helper_SetAppTitle(string.Format("{0,000} s ", performanceCounter.Elapsed.TotalSeconds)); ShowImage(false); }
private void Button_Click_3(object sender, RoutedEventArgs e) { if (_currentImage == null) { return; } int inputNumber = int.Parse(NumberInput.Text); Stopwatch performanceCounter = new Stopwatch(); performanceCounter.Start(); CanvasARGB canvas = Get_ProgressOrOrigInput(); RegionDetektor rd = new RegionDetektor(); CanvasPixel cp = rd.DetectOld(canvas, inputNumber); //cp.TransformFromInterleaveRGB(); _lastImage = CanvasPixel.CreateBitmpaFromCanvas(cp); performanceCounter.Stop(); Helper_SetAppTitle(string.Format("{0,000} s - regions : {1}", performanceCounter.Elapsed.TotalSeconds, rd.TotalRegions)); ShowImage(false); }
public RegionDetector2_0(CanvasARGB canvas) { this._canvasPixel = CanvasPixel.CreateBitmpaFromCanvas(canvas); this._canvasPixelOriginal = CanvasPixel.CreateBitmpaFromCanvas(canvas); this._regionManipulator = new RegionManipulator(this._canvasPixelOriginal, this._canvasPixel); }
private void ColorToCSV_Click(object sender, RoutedEventArgs e) { if (_currentImage == null) { return; } CanvasARGB canvas = Get_ProgressOrOrigInput(); using (TextWriter tw = new StreamWriter("testFile.csv", false, UTF8Encoding.UTF8)) using (CsvHelper.CsvWriter cw = new CsvHelper.CsvWriter(tw)) { cw.Configuration.Delimiter = ";"; cw.Configuration.UseExcelLeadingZerosFormatForNumerics = true; cw.WriteField("r"); cw.WriteField("g"); cw.WriteField("b"); cw.WriteField("left r"); cw.WriteField("left g"); cw.WriteField("left b"); cw.NextRecord(); // zapsani data na vystup for (int y = 0; y < canvas.HeightPixel; y++) { for (int x = 0; x < canvas.WidthPixel; x++) { int index = y * canvas.Width + x * 4; cw.WriteField(canvas.Data[index]); cw.WriteField(canvas.Data[index + 1]); cw.WriteField(canvas.Data[index + 2]); if (x > 0) { cw.WriteField(canvas.Data[index - 4]); cw.WriteField(canvas.Data[index - 4 + 1]); cw.WriteField(canvas.Data[index - 4 + 2]); } else { cw.WriteField(0); cw.WriteField(0); cw.WriteField(0); } cw.NextRecord(); } } } }
public CanvasPixel Detect(CanvasARGB canvas, int tolerance) { _regionPixelLookup = new RegionVO[canvas.Length]; _listRegion = new List <RegionVO>(); CanvasPixel canvasPixel = CanvasPixel.CreateBitmpaFromCanvas(canvas); this._regionManipulator = new RegionManipulator(null, canvasPixel); //canvasPixel.ConvertPixelsRGBToHSL(); //canvasPixel.ReduceNotSeenColors(); //canvasPixel.TransformToInterleaveRGB(); List <int> singleAlonePoints = CreateRegionFromStart(canvasPixel, 0);// tolerance); //List<int> singleAlonePoints = CreateRegionFromStartCicCac(canvasPixel, tolerance); FuseAllSinglePoints(singleAlonePoints, canvasPixel, tolerance); int minPixels = tolerance; //for (int i = 1; i <= 16; i++) // ReduceAllRegionUnderCountPixel(canvasPixel, i); for (int i = minPixels; i <= minPixels; i++) { ReduceAllRegionUnderColorTolerance(canvasPixel, i); } //ReduceAllRegionUnderCountPixel(canvasPixel, 5); Dictionary <int, int> groups = new Dictionary <int, int>(); foreach (var item in _listRegion) { if (groups.ContainsKey(item.Pixels.Length)) { groups[item.Pixels.Length]++; } else { groups.Add(item.Pixels.Length, 1); } } //canvasPixel.ConvertPixelsHSLToRGB(); return(canvasPixel); }
private void ShowImage(bool showOriginal) { if (showOriginal) { SetResultViewTo_Original(); } else { SetResultViewTo_LastResult(); } ImageCanvas.Source = CanvasARGB.CreateBitmpaFromCanvas(_currentImage); }
private void TraceNew_Click_1(object sender, RoutedEventArgs e) { if (_currentImage == null) { return; } int inputNumber = int.Parse(NumberInput.Text); Stopwatch performanceCounter = new Stopwatch(); performanceCounter.Start(); CanvasARGB canvas = Get_ProgressOrOrigInput(); CanvasPixel tmpCanvasPixel = CanvasPixel.CreateBitmpaFromCanvas(canvas); canvas = CanvasPixel.CreateBitmpaFromCanvas(tmpCanvasPixel); RegionDetector2_0 rd = new RegionDetector2_0(canvas); rd.Detect_ByColorToleranceNew(inputNumber); CanvasPixel cp = rd.Get_CanvasFromRegions(); if (CheckSaveToSVG.IsChecked.Value) { rd.ConvertRegionsToSVG(Helper_GetFileName_ForSVG(this._currentOpenFilename)); } // cp.TransformFromInterleaveRGB(); _lastImage = CanvasPixel.CreateBitmpaFromCanvas(cp); VectorPreview window = new VectorPreview(); //window.RenderLines( tmpCanvasPixel,cp); window.RenderPolygons(rd.Regions, rd.RegionManipulator); window.Show(); performanceCounter.Stop(); Helper_SetAppTitle(string.Format("{0,000} s - regions : {1}", performanceCounter.Elapsed.TotalSeconds, rd.TotalRegions)); ShowImage(false); }
private void Button_Click(object sender, RoutedEventArgs e) { if (_currentImage == null) { return; } int inputNumber = int.Parse(NumberInput.Text); Stopwatch performanceCounter = new Stopwatch(); performanceCounter.Start(); CanvasARGB canvas = Get_ProgressOrOrigInput(); //for (int i = 0; i < 28000; i += 4) //{ // canvas.Data[i] = 0; // canvas.Data[i + 1] = 255; // canvas.Data[i + 2] = 0; // canvas.Data[i + 3] = 255; //} CanvasPixel canvasPixel = CanvasPixel.CreateBitmpaFromCanvas(canvas); canvasPixel.TransformToInterleaveRGB(); BasicOperation.PixelFilter2(canvasPixel, inputNumber); //canvasPixel. //BasicOperation.BlackWhite(canvasPixel); _lastImage = CanvasPixel.CreateBitmpaFromCanvas(canvasPixel); //BitmapSource bs = CanvasARGB.CreateBitmpaFromCanvas(canvas); //_originalImage = bs; //byte [] array = BitmapToArray(_originalImage); performanceCounter.Stop(); Helper_SetAppTitle(string.Format("{0,000} s", performanceCounter.Elapsed.TotalSeconds)); ShowImage(false); //RenderTargetBitmap.Create( rtb //textBox1.Text = ofd.FileName; }
public MainWindow() { InitializeComponent(); string path = LoadFilePath(); if (!string.IsNullOrEmpty(path)) { this._currentOpenFilename = System.IO.Path.GetFileName(path); BitmapImage bi = GetBitmapImage(new Uri(path), BitmapCacheOption.OnLoad); CanvasARGB canvas = CanvasARGB.CreateCanvasFromBitmap(bi); _originalImage = canvas; _lastImage = CanvasARGB.Clone(canvas); _currentImage = CanvasARGB.Clone(canvas); } Helper_SetAppTitle(string.Empty); ShowImage(false); }
private void MenuItem_Click(object sender, RoutedEventArgs e) { var ofd = new Microsoft.Win32.OpenFileDialog() { Filter = "*.*|*.*|Bitmap Files (*.bmp)|*.bmp|JPEG Files (*.jpeg)|*.jpeg|PNG Files (*.png)|*.png|JPG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif" }; var result = ofd.ShowDialog(); if (result == false) { return; } this._currentOpenFilename = ofd.FileName; BitmapImage bi = GetBitmapImage(new Uri(ofd.FileName), BitmapCacheOption.OnLoad); CanvasARGB canvas = CanvasARGB.CreateCanvasFromBitmap(bi); _originalImage = canvas; SaveFilePath(ofd.FileName); _lastImage = CanvasARGB.Clone(canvas); ShowImage(false); }
private void SetResultViewTo_LastResult() { this._currentImage = this._lastImage; }
private void SetResultViewTo_Original() { this._currentImage = this._originalImage; }