GetTextLineBottom Method (GdPictureSegmenter)
 
            
                In This Topic
            
            Returns the bottom y-coordinate of the bounding box of the specified text line, that is a part of the segmentation result specified by its index. 
This method uses a coordinate system, where the origin is in the top-left corner of the processed image and the units are pixels.
 
            
            
            Syntax
            
            
            
            
            'Declaration
 
Public Function GetTextLineBottom( _
   ByVal  As String, _
   ByVal  As Integer _
) As Integer
             
        
            
            public int GetTextLineBottom( 
   string ,
   int 
)
             
        
            
            public function GetTextLineBottom( 
    : String;
    : Integer
): Integer; 
             
        
            
            public function GetTextLineBottom( 
    : String,
    : int
) : int;
             
        
            
            public: int GetTextLineBottom( 
   string* ,
   int 
) 
             
        
            
            public:
int GetTextLineBottom( 
   String^ ,
   int 
) 
             
        
             
        
            Parameters
- SegmentationResultID
 
- The unique result identifier of the executed segmentation process obtained by the GdPictureSegmenter.RunSegmentation method.
 - TextLineIdx
 
- The 0-based index of the text line within the specified segmentation result. It must be a value between 0 and GdPictureSegmenter.GetTextLineCount(SegmentationResultID)-1.
 
            
            Return Value
The bottom y-coordinate of the text line's bounding box, in pixels. 
Please always use the GdPictureSegmenter.GetStat method to determine if this method has been successful.
 
            
            
            
            
            
            Example
How to find out detected text lines within the segmentation result. All text lines are subsequently color-coded and saved into the output file.
            
             
    
	
		Dim caption As String = "Example: GetTextLineBottom"
Using gdpictureSegmenter As GdPictureSegmenter = New GdPictureSegmenter()
    Using gdpictureImaging As GdPictureImaging = New GdPictureImaging()
        'Set up the image you want to process.
        Dim image As Integer = gdpictureImaging.CreateGdPictureImageFromFile("input.tif")
        If (gdpictureImaging.GetStat() = GdPictureStatus.OK) AndAlso
           (gdpictureSegmenter.SetImage(image) = GdPictureStatus.OK) Then
            'Set the segmentation mode.
            gdpictureSegmenter.SegmentationMode = SegmentationMode.ConnectedComponents4
            'Run the segmentation process.
            Dim resultID As String = gdpictureSegmenter.RunSegmentation()
            If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then
                'Check the results.
                Dim textlineCount As Integer = gdpictureSegmenter.GetTextLineCount(resultID)
                If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then
                    Dim message As String = "The number of detected text lines: "
                    message = message + textlineCount.ToString() + vbCrLf
                    Dim top As Integer = 0, left As Integer = 0, bottom As Integer = 0, right As Integer = 0, save As Integer = 0
                    For i As Integer = 0 To textlineCount - 1
                        top = gdpictureSegmenter.GetTextLineTop(resultID, i)
                        If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then left = gdpictureSegmenter.GetTextLineLeft(resultID, i)
                        If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then bottom = gdpictureSegmenter.GetTextLineBottom(resultID, i)
                        If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then right = gdpictureSegmenter.GetTextLineRight(resultID, i)
                        If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then
                            If gdpictureImaging.DrawRectangle(image, left, top, right - left, bottom - top, 5, Color.Brown, True) = GdPictureStatus.OK Then
                                message = message + (i + 1).ToString() + ".rectangle has been drawn." + vbCrLf
                                save += 1
                            Else
                                message = message + (i + 1).ToString() + ".rectangle HAS NOT been drawn. Status: " + gdpictureSegmenter.GetStat().ToString() + vbCrLf
                            End If
                        Else
                            message = message + i.ToString() + ".text line has failed to get its position. Status: " + gdpictureSegmenter.GetStat().ToString() + vbCrLf
                        End If
                    Next
                    If textlineCount = 0 Then
                        message = message + "The resulting image HAS NOT been created."
                    Else
                        If save = textlineCount Then
                            If gdpictureImaging.SaveAsTIFF(image, "output.tif", TiffCompression.TiffCompressionAUTO) = GdPictureStatus.OK Then
                                message = message + "The resulting image HAS been saved successfully."
                            Else
                                message = message + "The resulting image HAS NOT been saved. Status: " + gdpictureImaging.GetStat().ToString()
                            End If
                        End If
                    End If
                    MessageBox.Show(message, caption)
                Else
                    MessageBox.Show("The GetTextLineCount() method has failed with the status: " + gdpictureSegmenter.GetStat().ToString(), caption)
                End If
            Else
                MessageBox.Show("The segmentation process has failed with the status: " + gdpictureSegmenter.GetStat().ToString(), caption)
            End If
            'Release the used image.
            gdpictureImaging.ReleaseGdPictureImage(image)
        Else
            MessageBox.Show("The error occurred when setting up the image: " + gdpictureImaging.GetStat().ToString() + " or " + gdpictureSegmenter.GetStat().ToString(), caption)
        End If
    End Using
    'Release resources.
    gdpictureSegmenter.ReleaseSegmentationResults()
End Using
	 
	
		string caption = "Example: GetTextLineBottom";
using (GdPictureSegmenter gdpictureSegmenter = new GdPictureSegmenter())
{
    //Set up the image you want to process.
    using (GdPictureImaging gdpictureImaging = new GdPictureImaging())
    {
        //The standard open file dialog displays to allow you to select the file.
        int image = gdpictureImaging.CreateGdPictureImageFromFile("input.tif");
        if ((gdpictureImaging.GetStat() == GdPictureStatus.OK) &&
            (gdpictureSegmenter.SetImage(image) == GdPictureStatus.OK))
        {
            //Set the segmentation mode.
            gdpictureSegmenter.SegmentationMode = SegmentationMode.ConnectedComponents4;
            //Run the segmentation process.
            string resultID = gdpictureSegmenter.RunSegmentation();
            if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
            {
                //Check the results.
                int textlineCount = gdpictureSegmenter.GetTextLineCount(resultID);
                if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
                {
                    string message = "The number of detected text lines: ";
                    message = message + textlineCount.ToString() + "\n";
                    int top = 0, left = 0, bottom = 0, right = 0, save = 0;
                    for (int i = 0; i < textlineCount; i++)
                    {
                        top = gdpictureSegmenter.GetTextLineTop(resultID, i);
                        if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
                            left = gdpictureSegmenter.GetTextLineLeft(resultID, i);
                        if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
                            bottom = gdpictureSegmenter.GetTextLineBottom(resultID, i);
                        if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
                            right = gdpictureSegmenter.GetTextLineRight(resultID, i);
                        if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
                        {
                            if (gdpictureImaging.DrawRectangle(image, left, top, right - left, bottom - top, 5, Color.Brown, true) == GdPictureStatus.OK)
                            {
                                message = message + (i + 1).ToString() + ".rectangle has been drawn.\n";
                                save++;
                            }
                            else
                                message = message + (i + 1).ToString() + ".rectangle HAS NOT been drawn. Status: " + gdpictureSegmenter.GetStat().ToString() + "\n";
                        }
                        else
                            message = message + i.ToString() + ".paragraph has failed to get its position. Status: " + gdpictureSegmenter.GetStat().ToString() + "\n";
                    }
                    if (textlineCount == 0)
                    {
                        message = message + "The resulting image HAS NOT been created.";
                    }
                    else
                    {
                        if (save == textlineCount)
                        {
                            if (gdpictureImaging.SaveAsTIFF(image, "output.tiff", TiffCompression.TiffCompressionAUTO) == GdPictureStatus.OK)
                                message = message + "The resulting image HAS been saved successfully.";
                            else
                                message = message + "The resulting image HAS NOT been saved. Status: " + gdpictureImaging.GetStat().ToString();
                        }
                    }
                    MessageBox.Show(message, caption);
                }
                else
                    MessageBox.Show("The GetTextLineCount() method has failed with the status: " + gdpictureSegmenter.GetStat().ToString(), caption);
            }
            else
                MessageBox.Show("The segmentation process has failed with the status: " + gdpictureSegmenter.GetStat().ToString(), caption);
            //Release the used image.
            gdpictureImaging.ReleaseGdPictureImage(image);
        }
        else
            MessageBox.Show("The error occurred when setting up the image: " + gdpictureImaging.GetStat().ToString() + " or " + gdpictureSegmenter.GetStat().ToString(), caption);
    }
    //Release resources.
    gdpictureSegmenter.ReleaseSegmentationResults();
}
	 
	
 
 
            
            Example
How to find out detected text lines within the segmentation result. All text lines are subsequently color-coded and saved into the output file.
            
            Dim caption As String = "Example: GetTextLineBottom"
            Using gdpictureSegmenter As GdPictureSegmenter = New GdPictureSegmenter()
                Using gdpictureImaging As GdPictureImaging = New GdPictureImaging()
                    'Set up the image you want to process.
                    Dim image As Integer = gdpictureImaging.CreateGdPictureImageFromFile("input.tif")
                    If (gdpictureImaging.GetStat() = GdPictureStatus.OK) AndAlso
                       (gdpictureSegmenter.SetImage(image) = GdPictureStatus.OK) Then
                        'Set the segmentation mode.
                        gdpictureSegmenter.SegmentationMode = SegmentationMode.ConnectedComponents4
                        'Run the segmentation process.
                        Dim resultID As String = gdpictureSegmenter.RunSegmentation()
                        If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then
                            'Check the results.
                            Dim textlineCount As Integer = gdpictureSegmenter.GetTextLineCount(resultID)
                            If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then
                                Dim message As String = "The number of detected text lines: "
                                message = message + textlineCount.ToString() + vbCrLf
                                Dim top As Integer = 0, left As Integer = 0, bottom As Integer = 0, right As Integer = 0, save As Integer = 0
                                For i As Integer = 0 To textlineCount - 1
                                    top = gdpictureSegmenter.GetTextLineTop(resultID, i)
                                    If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then left = gdpictureSegmenter.GetTextLineLeft(resultID, i)
                                    If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then bottom = gdpictureSegmenter.GetTextLineBottom(resultID, i)
                                    If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then right = gdpictureSegmenter.GetTextLineRight(resultID, i)
                                    If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then
                                        If gdpictureImaging.DrawRectangle(image, left, top, right - left, bottom - top, 5, Color.Brown, True) = GdPictureStatus.OK Then
                                            message = message + (i + 1).ToString() + ".rectangle has been drawn." + vbCrLf
                                            save += 1
                                        Else
                                            message = message + (i + 1).ToString() + ".rectangle HAS NOT been drawn. Status: " + gdpictureSegmenter.GetStat().ToString() + vbCrLf
                                        End If
                                    Else
                                        message = message + i.ToString() + ".text line has failed to get its position. Status: " + gdpictureSegmenter.GetStat().ToString() + vbCrLf
                                    End If
                                Next
                                If textlineCount = 0 Then
                                    message = message + "The resulting image HAS NOT been created."
                                Else
                                    If save = textlineCount Then
                                        If gdpictureImaging.SaveAsTIFF(image, "output.tif", TiffCompression.TiffCompressionAUTO) = GdPictureStatus.OK Then
                                            message = message + "The resulting image HAS been saved successfully."
                                        Else
                                            message = message + "The resulting image HAS NOT been saved. Status: " + gdpictureImaging.GetStat().ToString()
                                        End If
                                    End If
                                End If
                                MessageBox.Show(message, caption)
                            Else
                                MessageBox.Show("The GetTextLineCount() method has failed with the status: " + gdpictureSegmenter.GetStat().ToString(), caption)
                            End If
                        Else
                            MessageBox.Show("The segmentation process has failed with the status: " + gdpictureSegmenter.GetStat().ToString(), caption)
                        End If
                        'Release the used image.
                        gdpictureImaging.ReleaseGdPictureImage(image)
                    Else
                        MessageBox.Show("The error occurred when setting up the image: " + gdpictureImaging.GetStat().ToString() + " or " + gdpictureSegmenter.GetStat().ToString(), caption)
                    End If
                End Using
                'Release resources.
                gdpictureSegmenter.ReleaseSegmentationResults()
            End Using
            string caption = "Example: GetTextLineBottom";
            using (GdPictureSegmenter gdpictureSegmenter = new GdPictureSegmenter())
            {
                //Set up the image you want to process.
                using (GdPictureImaging gdpictureImaging = new GdPictureImaging())
                {
                    //The standard open file dialog displays to allow you to select the file.
                    int image = gdpictureImaging.CreateGdPictureImageFromFile("input.tif");
                    if ((gdpictureImaging.GetStat() == GdPictureStatus.OK) &&
                        (gdpictureSegmenter.SetImage(image) == GdPictureStatus.OK))
                    {
                        //Set the segmentation mode.
                        gdpictureSegmenter.SegmentationMode = SegmentationMode.ConnectedComponents4;
                        //Run the segmentation process.
                        string resultID = gdpictureSegmenter.RunSegmentation();
                        if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
                        {
                            //Check the results.
                            int textlineCount = gdpictureSegmenter.GetTextLineCount(resultID);
                            if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
                            {
                                string message = "The number of detected text lines: ";
                                message = message + textlineCount.ToString() + "\n";
                                int top = 0, left = 0, bottom = 0, right = 0, save = 0;
                                for (int i = 0; i < textlineCount; i++)
                                {
                                    top = gdpictureSegmenter.GetTextLineTop(resultID, i);
                                    if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
                                        left = gdpictureSegmenter.GetTextLineLeft(resultID, i);
                                    if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
                                        bottom = gdpictureSegmenter.GetTextLineBottom(resultID, i);
                                    if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
                                        right = gdpictureSegmenter.GetTextLineRight(resultID, i);
                                    if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
                                    {
                                        if (gdpictureImaging.DrawRectangle(image, left, top, right - left, bottom - top, 5, Color.Brown, true) == GdPictureStatus.OK)
                                        {
                                            message = message + (i + 1).ToString() + ".rectangle has been drawn.\n";
                                            save++;
                                        }
                                        else
                                            message = message + (i + 1).ToString() + ".rectangle HAS NOT been drawn. Status: " + gdpictureSegmenter.GetStat().ToString() + "\n";
                                    }
                                    else
                                        message = message + i.ToString() + ".paragraph has failed to get its position. Status: " + gdpictureSegmenter.GetStat().ToString() + "\n";
                                }
                                if (textlineCount == 0)
                                {
                                    message = message + "The resulting image HAS NOT been created.";
                                }
                                else
                                {
                                    if (save == textlineCount)
                                    {
                                        if (gdpictureImaging.SaveAsTIFF(image, "output.tiff", TiffCompression.TiffCompressionAUTO) == GdPictureStatus.OK)
                                            message = message + "The resulting image HAS been saved successfully.";
                                        else
                                            message = message + "The resulting image HAS NOT been saved. Status: " + gdpictureImaging.GetStat().ToString();
                                    }
                                }
                                MessageBox.Show(message, caption);
                            }
                            else
                                MessageBox.Show("The GetTextLineCount() method has failed with the status: " + gdpictureSegmenter.GetStat().ToString(), caption);
                        }
                        else
                            MessageBox.Show("The segmentation process has failed with the status: " + gdpictureSegmenter.GetStat().ToString(), caption);
                        //Release the used image.
                        gdpictureImaging.ReleaseGdPictureImage(image);
                    }
                    else
                        MessageBox.Show("The error occurred when setting up the image: " + gdpictureImaging.GetStat().ToString() + " or " + gdpictureSegmenter.GetStat().ToString(), caption);
                }
                //Release resources.
                gdpictureSegmenter.ReleaseSegmentationResults();
            }
            
            
            See Also