diff --git a/Examples/Common/ScreenshotScanner.cs b/Examples/Common/ScreenshotScanner.cs
index 1dc3163..cc61e7e 100644
--- a/Examples/Common/ScreenshotScanner.cs
+++ b/Examples/Common/ScreenshotScanner.cs
@@ -36,16 +36,21 @@ namespace Common
///
/// Configuration of the
///
- public ScreenshotProcessorConfiguration ImageProcessorConfiguration { get; set; } = new();
+ public ScreenshotProcessorConfiguration ImageProcessorConfiguration { get; }
- public ITesseractConfiguration TesseractConfiguration { get; set; } =
- new TesseractScreenshotConfiguration();
+ public ITesseractConfiguration TesseractConfiguration { get; }
///
/// Constructor
///
- public ScreenshotScanner()
+ public ScreenshotScanner(
+ ScreenshotProcessorConfiguration imageProcessorConfig,
+ ITesseractConfiguration tesseractConfig
+ )
{
+ ImageProcessorConfiguration = imageProcessorConfig;
+ TesseractConfiguration = tesseractConfig;
+
_processor = MakeProcessor();
}
diff --git a/Examples/GUI/ViewModels/ImageViewModel.cs b/Examples/GUI/ViewModels/ImageViewModel.cs
index f4ccf92..c995d54 100644
--- a/Examples/GUI/ViewModels/ImageViewModel.cs
+++ b/Examples/GUI/ViewModels/ImageViewModel.cs
@@ -2,7 +2,9 @@
using GUI.Model;
using ImageMagick;
using Microsoft.Win32;
+using Ocr.Tesseract.Configuration;
using Ocr.Tesseract.Models;
+using Ocr.Tesseract.Screenshots.Configuration;
using Process.Interface;
using Serilog;
using System;
@@ -20,9 +22,16 @@ namespace GUI.ViewModels;
internal class ImageViewModel : ScreenshotScanner, INotifyPropertyChanged
{
- public ImageViewModel()
+ private static ITesseractConfiguration CreateTesseractConfiguration() =>
+ new TesseractScreenshotConfiguration()
+ {
+ DataPath = "tessdata",
+ Languages = new[] { "eng", "deu" }
+ };
+
+ public ImageViewModel() : base(new(), CreateTesseractConfiguration())
{
- // Scanner.ImageOperationSettings.PropertyChanged += (sender, args) => Task.Run(UpdateImage);
+ ImageProcessorConfiguration.PropertyChanged += (sender, args) => Task.Run(UpdateImage);
OpenFileCommand = new Command(OpenFile);
SaveEditedImageCommand = new Command(SaveEditedImage);
diff --git a/Examples/GUI/Views/ImageView.xaml.cs b/Examples/GUI/Views/ImageView.xaml.cs
index a291641..5ebd7e0 100644
--- a/Examples/GUI/Views/ImageView.xaml.cs
+++ b/Examples/GUI/Views/ImageView.xaml.cs
@@ -12,6 +12,8 @@ namespace GUI.Views
///
public partial class ImageView : Window
{
+ private ImageViewModel ViewModel => (ImageViewModel)DataContext;
+
public ImageView()
{
DataContext = new ImageViewModel();
@@ -26,18 +28,21 @@ namespace GUI.Views
private void SldThreshold1_OnDragCompleted(object sender, DragCompletedEventArgs args)
{
- ((ImageViewModel)DataContext).ImageProcessorConfiguration.ThresholdWidth = (int)Math.Round(((Slider)sender).Value);
+ var vm = ViewModel;
+ vm.ImageProcessorConfiguration.ThresholdWidth = (int)Math.Round(((Slider)sender).Value);
}
private void SldThreshold2_OnDragCompleted(object sender, DragCompletedEventArgs args)
{
- ((ImageViewModel)DataContext).ImageProcessorConfiguration.ThresholdHeight = (int)Math.Round(((Slider)sender).Value);
+ var vm = ViewModel;
+ vm.ImageProcessorConfiguration.ThresholdHeight = (int)Math.Round(((Slider)sender).Value);
}
private void SldBorder_OnDragCompleted(object sender, DragCompletedEventArgs e)
{
- ((ImageViewModel)DataContext).ImageProcessorConfiguration.Border = (int)Math.Round(((Slider)sender).Value);
+ var vm = ViewModel;
+ vm.ImageProcessorConfiguration.Border = (int)Math.Round(((Slider)sender).Value);
}
}
}
diff --git a/Ocr/Ocr.Tesseract.Screenshots/ScreenshotProcessor.cs b/Ocr/Ocr.Tesseract.Screenshots/ScreenshotProcessor.cs
index f3206a9..9667e1c 100644
--- a/Ocr/Ocr.Tesseract.Screenshots/ScreenshotProcessor.cs
+++ b/Ocr/Ocr.Tesseract.Screenshots/ScreenshotProcessor.cs
@@ -50,25 +50,6 @@ public class ScreenshotProcessor : ImageProcessor
yield return tImage;
yield return tImage.CloneImage().NegateColors();
-
- // todo filter large connected components
-
- // var resized = fluent .CloneObject() .Resize( 0.25f, FilterType.Point,
- // PixelInterpolateMethod.Integer ); yield return resized.ToImage();
- //
- // var hlines = resized .GetHLines() .Select(c => new MagickGeometry(c.Item1, c.Item2, c.Item1 +
- // 3, c.Item2 + 3)) .ToArray(); Log.Information($"Matched {hlines.Length} geometries");
- //
- // var rgbImage = resized.CloneObject().ToRgb(); rgbImage.Fill(MagickColors.Red, hlines); yield
- // return rgbImage.ToImage();
-
- // if (Settings.FilterConnectedComponents) { var colorImage = fluent .CloneObject()
- // .GetConnectedComponents( _connectedComponentsSettings, out var components ) .ToRgb();
- //
- // var pixels = colorImage.GetPixels(); colorImage.Fill( MagickColors.Red, components .Where(c
- // => c.IsFilled(pixels)) .Select(c => c.ToGeometry()) );
-
- // yield return colorImage.ToImage();
}
#region Overrides of Processor