VintaSoft Imaging .NET SDK v8.6
Vintasoft.Imaging.FormsProcessing.TemplateMatching Namespace / ImageImprintGeneratorCommand Class
Members Example



In This Topic
    ImageImprintGeneratorCommand Class
    In This Topic
    Generates an imprint of an image.
    Object Model
    ImageImprintGeneratorCommand ClassImageImprint ClassRegionOfInterest ClassProcessingCommandResults ClassProcessingCommandResult Class
    Syntax
    'Declaration
     
    Public Class ImageImprintGeneratorCommand 
       Inherits Vintasoft.Imaging.ImageProcessing.ProcessingCommandWithRegion
    public class ImageImprintGeneratorCommand : Vintasoft.Imaging.ImageProcessing.ProcessingCommandWithRegion 
    public __gc class ImageImprintGeneratorCommand : public Vintasoft.Imaging.ImageProcessing.ProcessingCommandWithRegion 
    public ref class ImageImprintGeneratorCommand : public Vintasoft.Imaging.ImageProcessing.ProcessingCommandWithRegion 
    Example
    This example shows how to identify and recognize a form synchronously.
    ''' <summary>
    ''' Recognizes single image synchronously.
    ''' </summary>
    ''' <param name="templateManager">The template manager.</param>
    ''' <param name="image">The image.</param>
    Public Shared Sub RecognizeSingleImageSync(templateManager As Vintasoft.Imaging.FormsProcessing.FormRecognition.FormTemplateManager, image As Vintasoft.Imaging.VintasoftImage)
        ' create template matching command
        Dim templateMatchingCommand As New Vintasoft.Imaging.FormsProcessing.TemplateMatching.TemplateMatchingCommand()
        ' set minimal confidence
        templateMatchingCommand.MinConfidence = 0.6F
        ' set template images
        templateMatchingCommand.TemplateImages = templateManager.TemplateImages
        ' create recognition manager
        Dim recognitionManager As New Vintasoft.Imaging.FormsProcessing.FormRecognitionManager(templateMatchingCommand, templateManager)
                
        ' create the command, which will process the image and search key zones based on lines
        Dim keyLineRecognizerCommand As New Vintasoft.Imaging.FormsProcessing.TemplateMatching.KeyLineRecognizerCommand()
        keyLineRecognizerCommand.ImagePreprocessing = New Vintasoft.Imaging.ImageProcessing.CompositeCommand(New Vintasoft.Imaging.ImageProcessing.Document.DespeckleCommand(), New Vintasoft.Imaging.ImageProcessing.Filters.DilateCommand())
        ' create and use the image imprint generator
        recognitionManager.TemplateMatching.ImageImprintGenerator = New Vintasoft.Imaging.FormsProcessing.TemplateMatching.ImageImprintGeneratorCommand(keyLineRecognizerCommand)
                
        ' if your form template contains OCR fields,
        ' make sure OCR engine manager is initialized before recognition
        ' (otherwise recognition will return null (Nothing)),
        ' see OCR field recognition examples
                
        ' subscribe to ImageRecognitionError event to output recognition errors
        AddHandler recognitionManager.ImageRecognitionError, AddressOf recognitionManager_ImageRecognitionError
                
        ' recognize the image
        Dim recognitionResult As Vintasoft.Imaging.FormsProcessing.FormRecognitionResult = recognitionManager.Recognize(image)
                
        ' unsubscribe from ImageRecognitionError event
        RemoveHandler recognitionManager.ImageRecognitionError, AddressOf recognitionManager_ImageRecognitionError
                
        ' if recognition failed with error (see ImageRecognitionError event handler output)
        If recognitionResult Is Nothing Then
            Return
        End If
                
        ' get the result of image comparison
        Dim imageCompareResult As Vintasoft.Imaging.FormsProcessing.TemplateMatching.ImageImprintCompareResult = recognitionResult.TemplateMatchingResult.ImageCompareResult
        ' if result is not reliable
        If Not imageCompareResult.IsReliable Then
            ' matching template is not found
            System.Console.WriteLine("Matching template is not found.")
        Else
            ' get recognized page
            Dim recognizedPage As Vintasoft.Imaging.FormsProcessing.FormRecognition.FormPage = recognitionResult.RecognizedPage
            ' write page info
            System.Console.WriteLine(String.Format("Matching template: {0}; confidence: {1:F1}%.", recognizedPage.Name, imageCompareResult.Confidence * 100))
                
            ' get form field count
            If recognizedPage.Items.Count = 0 Then
                System.Console.WriteLine("No form fields were recognized.")
            Else
                System.Console.WriteLine(String.Format("Recognized form field count: {0}", recognizedPage.Items.Count))
                ' for each recognized form field
                For Each recognizedField As Vintasoft.Imaging.FormsProcessing.FormRecognition.FormField In recognizedPage.Items
                    ' write field info
                    System.Console.WriteLine(String.Format("  Name: {0}; value: {1}; confidence: {2:F1}%", recognizedField.Name, recognizedField.Value, recognizedField.Confidence * 100))
                Next
            End If
        End If
    End Sub
                
    ''' <summary>
    ''' Handles the ImageRecognitionError event of the FormRecognitionManager.
    ''' </summary>
    Private Shared Sub recognitionManager_ImageRecognitionError(sender As Object, e As Vintasoft.Imaging.FormsProcessing.FormRecognitionErrorEventArgs)
        System.Console.WriteLine(e.Exception.Message)
    End Sub
    /// <summary>
    /// Recognizes single image synchronously.
    /// </summary>
    /// <param name="templateManager">The template manager.</param>
    /// <param name="image">The image.</param>
    public static void RecognizeSingleImageSync(
        Vintasoft.Imaging.FormsProcessing.FormRecognition.FormTemplateManager templateManager,
        Vintasoft.Imaging.VintasoftImage image)
    {
        // create template matching command
        Vintasoft.Imaging.FormsProcessing.TemplateMatching.TemplateMatchingCommand templateMatchingCommand =
            new Vintasoft.Imaging.FormsProcessing.TemplateMatching.TemplateMatchingCommand();
        // set minimal confidence
        templateMatchingCommand.MinConfidence = 0.6f;
        // set template images
        templateMatchingCommand.TemplateImages = templateManager.TemplateImages;
        // create recognition manager
        Vintasoft.Imaging.FormsProcessing.FormRecognitionManager recognitionManager =
            new Vintasoft.Imaging.FormsProcessing.FormRecognitionManager(
            templateMatchingCommand, templateManager);
                
        // create the command, which will process the image and search key zones based on lines
        Vintasoft.Imaging.FormsProcessing.TemplateMatching.KeyLineRecognizerCommand keyLineRecognizerCommand =
            new Vintasoft.Imaging.FormsProcessing.TemplateMatching.KeyLineRecognizerCommand();
        keyLineRecognizerCommand.ImagePreprocessing = new Vintasoft.Imaging.ImageProcessing.CompositeCommand(
            new Vintasoft.Imaging.ImageProcessing.Document.DespeckleCommand(),
            new Vintasoft.Imaging.ImageProcessing.Filters.DilateCommand());
        // create and use the image imprint generator
        recognitionManager.TemplateMatching.ImageImprintGenerator =
            new Vintasoft.Imaging.FormsProcessing.TemplateMatching.ImageImprintGeneratorCommand(keyLineRecognizerCommand);
                
        // if your form template contains OCR fields,
        // make sure OCR engine manager is initialized before recognition
        // (otherwise recognition will return null (Nothing)),
        // see OCR field recognition examples
                
        // subscribe to ImageRecognitionError event to output recognition errors
        recognitionManager.ImageRecognitionError += recognitionManager_ImageRecognitionError;
                
        // recognize the image
        Vintasoft.Imaging.FormsProcessing.FormRecognitionResult recognitionResult = recognitionManager.Recognize(image);
                
        // unsubscribe from ImageRecognitionError event
        recognitionManager.ImageRecognitionError -= recognitionManager_ImageRecognitionError;
                
        // if recognition failed with error (see ImageRecognitionError event handler output)
        if (recognitionResult == null)
            return;
                
        // get the result of image comparison
        Vintasoft.Imaging.FormsProcessing.TemplateMatching.ImageImprintCompareResult imageCompareResult =
            recognitionResult.TemplateMatchingResult.ImageCompareResult;
        // if result is not reliable
        if (!imageCompareResult.IsReliable)
        {
            // matching template is not found
            System.Console.WriteLine("Matching template is not found.");
        }
        else
        {
            // get recognized page
            Vintasoft.Imaging.FormsProcessing.FormRecognition.FormPage recognizedPage =
                recognitionResult.RecognizedPage;
            // write page info
            System.Console.WriteLine(string.Format(
                "Matching template: {0}; confidence: {1:F1}%.",
                recognizedPage.Name,
                imageCompareResult.Confidence * 100));
                
            // get form field count
            if (recognizedPage.Items.Count == 0)
            {
                System.Console.WriteLine("No form fields were recognized.");
            }
            else
            {
                System.Console.WriteLine(string.Format(
                    "Recognized form field count: {0}",
                    recognizedPage.Items.Count));
                // for each recognized form field
                foreach (Vintasoft.Imaging.FormsProcessing.FormRecognition.FormField recognizedField in recognizedPage.Items)
                {
                    // write field info
                    System.Console.WriteLine(string.Format(
                        "  Name: {0}; value: {1}; confidence: {2:F1}%",
                        recognizedField.Name,
                        recognizedField.Value,
                        recognizedField.Confidence * 100));
                }
            }
        }
    }
                
    /// <summary>
    /// Handles the ImageRecognitionError event of the FormRecognitionManager.
    /// </summary>
    static void recognitionManager_ImageRecognitionError(
        object sender,
        Vintasoft.Imaging.FormsProcessing.FormRecognitionErrorEventArgs e)
    {
        System.Console.WriteLine(e.Exception.Message);
    }
    Inheritance Hierarchy

    System.Object
       Vintasoft.Imaging.ImageProcessing.ProcessingCommandBase
          Vintasoft.Imaging.ImageProcessing.ProcessingCommandWithRegion
             Vintasoft.Imaging.FormsProcessing.TemplateMatching.ImageImprintGeneratorCommand

    Requirements

    Target Platforms: Windows 10, Windows 8, Windows 7, Windows Vista, Windows XP, Windows Server 2012, Windows Server 2008, Windows Server 2003

    See Also