private Card FindBestMatch(ulong needle, List <Card> referenceCards, SetFilter fromSet, List <Card> ignoreCards) { Card bestMatch = null; var lowestHamming = int.MaxValue; var phash = new pHash(); var setComparer = new SetEqualityComparer(); foreach (var referenceCard in referenceCards) { if (fromSet != SetFilter.All && !setComparer.Equals(referenceCard.Set, fromSet.Set)) { continue; } if (ignoreCards.Any() && ignoreCards.Contains(referenceCard)) { continue; } var hamming = phash.HammingDistance(referenceCard.pHash, needle); if (hamming < lowestHamming) { lowestHamming = hamming; bestMatch = referenceCard; } } return(bestMatch); }
private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { e.Source = ControlName; SetFilter?.Invoke(new[] { WidthTextBox.Text, HeightTextBox.Text, ThresholdTextBox.Text }, e); }
public List <IdentifiedCard> Identify(List <DetectedCard> detections, List <Card> referenceCards, SetFilter fromSet, List <Card> ignoreCards) { var phash = new pHash(); var matchedCards = new List <IdentifiedCard>(); foreach (var detectedCard in detections) { var cardHash = phash.ImageHash(detectedCard.CardBitmap); var bestMatch = FindBestMatch(cardHash, referenceCards, fromSet, ignoreCards); if (bestMatch != null) { // highly experimental #if NULL const string tessDataDir = @".\\tessdata"; using (var engine = new TesseractEngine(tessDataDir, "eng", EngineMode.Default)) using (var image = Pix.LoadFromFile(".\\tempCard" + cardTempId + ".jpg")) using (var page = engine.Process(image)) { string text = page.GetText(); Console.WriteLine("DEBUG: Mean confidence: {0}", page.GetMeanConfidence()); Console.WriteLine("DEBUG: " + text); } #endif matchedCards.Add(new IdentifiedCard(detectedCard, bestMatch)); } } return(matchedCards); }
public void Add(SetFilter set) { if (!IsAll) { (sets ??= new()).Add(set); } }
private void IterationsTextBox_TextChanged(object sender, TextChangedEventArgs e) { e.Source = ControlName; SetFilter?.Invoke(new[] { MorphMethodComboBox.SelectedItem.ToString(), IterationsTextBox.Text, BorderTypeComboBox.SelectedItem.ToString(), MorphShapesComboBox.SelectedItem.ToString(), SizeWidthTextBox.Text, SizeHeightTextBox.Text }, e); }
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { SetFilter?.Invoke(new[] { MaxValueTextBox.Text, AdaptiveMethodComboBox.SelectedItem.ToString(), ThresholdTypeComboBox.SelectedItem.ToString(), BlockSizeTextBox.Text, ConstantTextBox.Text }, new TextChangedEventArgs(e.RoutedEvent, UndoAction.None) { Source = ControlName }); }
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { SetFilter?.Invoke(new[] { HorizontalNumeric.Value.GetValueOrDefault(0).ToString(), VerticalNumeric.Value.GetValueOrDefault(0).ToString(), UnitComboBox.SelectedItem.ToString() }, new TextChangedEventArgs(e.RoutedEvent, UndoAction.None) { Source = ControlName }); }
private void CropModeBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { SetFilter?.Invoke(new[] { LeftTextBox.Text, TopTextBox.Text, RightTextBox.Text, BottomTextBox.Text, CropModeBox.SelectedItem.ToString() }, new TextChangedEventArgs(e.RoutedEvent, UndoAction.None) { Source = ControlName }); }
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { SetFilter?.Invoke(new[] { ThreshTextBox.Text, MaxValueTextBox.Text , ThresholdTypeComboBox.SelectedItem.ToString() }, new TextChangedEventArgs(e.RoutedEvent, UndoAction.None) { Source = ControlName }); }
private void CheckBox_Click(object sender, RoutedEventArgs e) { SetFilter?.Invoke(new[] { InputTextBox.Text, CheckBox.IsChecked.GetValueOrDefault().ToString() }, new TextChangedEventArgs(e.RoutedEvent, UndoAction.None) { Source = ControlName }); }
private void CheckBoxOnlyGrayscale_Click(object sender, RoutedEventArgs e) { SetFilter?.Invoke(new[] { CheckBoxOnlyGrayscale.IsChecked.GetValueOrDefault().ToString(), ChannelsComboBox.SelectedItem.ToString() }, new TextChangedEventArgs(e.RoutedEvent, UndoAction.None) { Source = ControlName }); }
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { SetFilter?.Invoke(new[] { MorphMethodComboBox.SelectedItem.ToString(), IterationsTextBox.Text, BorderTypeComboBox.SelectedItem.ToString(), MorphShapesComboBox.SelectedItem.ToString(), SizeWidthTextBox.Text, SizeHeightTextBox.Text }, new TextChangedEventArgs(e.RoutedEvent, UndoAction.None) { Source = ControlName }); }
private void ChannelsComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (ChannelsComboBox.Visibility != System.Windows.Visibility.Visible) { return; } SetFilter?.Invoke(new[] { RadiusTextBox.Text, SigmaTextBox.Text, ChannelsComboBox.SelectedItem.ToString() }, new TextChangedEventArgs(e.RoutedEvent, UndoAction.None) { Source = ControlName }); }
private void EnumComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (EnumComboBox.Items.Count == 0) { return; } SetFilter?.Invoke(new[] { EnumComboBox.SelectedItem.ToString() }, new TextChangedEventArgs(e.RoutedEvent, UndoAction.None) { Source = ControlName }); }
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { var inputBox = sender as ComboBox; if (inputBox.Visibility != System.Windows.Visibility.Visible) { return; } SetFilter?.Invoke(new[] { (inputBox.SelectedItem as ComboBoxItem).Content.ToString() }, new TextChangedEventArgs(e.RoutedEvent, UndoAction.None) { Source = ControlName }); }
private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { e.Source = ControlName; SetFilter?.Invoke(new[] { StrengthTextBox.Text, ColorStrengthTextBox.Text }, e); }
private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { e.Source = ControlName; SetFilter?.Invoke(new[] { (sender as TextBox).Text }, e); }
private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { e.Source = ControlName; SetFilter?.Invoke(new[] { ThreshTextBox.Text, MaxValueTextBox.Text , ThresholdTypeComboBox.SelectedItem.ToString() }, e); }
private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { e.Source = ControlName; SetFilter?.Invoke(new[] { CodeComboBox.SelectedItem.ToString(), dstCnTextBox.Text }, e); }
private void TextBoxCL_TextChanged(object sender, TextChangedEventArgs e) { e.Source = ControlName; SetFilter?.Invoke(new[] { LeftTextBox.Text, TopTextBox.Text, RightTextBox.Text, BottomTextBox.Text, CropModeBox.SelectedItem.ToString() }, e); }
public static ISet Filter(ISet a, SetFilter filter) { IMutableSet inter = new HashSet(); foreach(object elem in a) { if (filter(elem)) { inter.Add(elem); } } return inter; }
private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { e.Source = ControlName; SetFilter?.Invoke(new[] { RadiusTextBox.Text, SigmaTextBox.Text, ChannelsComboBox.SelectedItem.ToString() }, e); }
private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { e.Source = ControlName; SetFilter?.Invoke(new[] { HorizontalNumeric.Value.GetValueOrDefault(0).ToString(), VerticalNumeric.Value.GetValueOrDefault(0).ToString(), UnitComboBox.SelectedItem.ToString() }, e); }
private void InputTextBox_TextChanged(object sender, TextChangedEventArgs e) { e.Source = ControlName; SetFilter?.Invoke(GetInputs(), e); }
private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { e.Source = ControlName; SetFilter?.Invoke(new[] { MaxValueTextBox.Text, AdaptiveMethodComboBox.SelectedItem.ToString(), ThresholdTypeComboBox.SelectedItem.ToString(), BlockSizeTextBox.Text, ConstantTextBox.Text }, e); }
private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { e.Source = ControlName; SetFilter?.Invoke(new[] { TargetTextBox.Text, ReplacementTextBox.Text, FuzzinessTextBox.Text }, e); }
private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { e.Source = ControlName; SetFilter?.Invoke(new[] { InputTextBox.Text, CheckBox.IsChecked.GetValueOrDefault().ToString() }, e); }