GetBlockRight Method (GdPictureSegmenter)
In This Topic
Returns the right x-coordinate of the bounding box of the specified block, 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 GetBlockRight( _
ByVal As String, _
ByVal As Integer _
) As Integer
public int GetBlockRight(
string ,
int
)
public function GetBlockRight(
: String;
: Integer
): Integer;
public function GetBlockRight(
: String,
: int
) : int;
public: int GetBlockRight(
string* ,
int
)
public:
int GetBlockRight(
String^ ,
int
)
Parameters
- SegmentationResultID
- The unique result identifier of the executed segmentation process obtained by the RunSegmentation method.
- BlockIdx
- The 0-based index of the block within the specified segmentation result. It must be a value between 0 and GetBlockCount(SegmentationResultID)-1.
Return Value
The right x-coordinate of the block's bounding box, in pixels.
The GetStat method can be subsequently used to determine if this method has been successful.
Example
How to find out detected blocks within the segmentation result. All blocks are subsequently color-coded and saved into the output file.
Dim caption As String = "Example: GetBlockRight"
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 blockCount As Integer = gdpictureSegmenter.GetBlockCount(resultID)
If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then
Dim message As String = "The number of detected blocks: "
message = message + blockCount.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 blockCount - 1
top = gdpictureSegmenter.GetBlockTop(resultID, i)
If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then left = gdpictureSegmenter.GetBlockLeft(resultID, i)
If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then bottom = gdpictureSegmenter.GetBlockBottom(resultID, i)
If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then right = gdpictureSegmenter.GetBlockRight(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() + ".block has failed to get its position. Status: " + gdpictureSegmenter.GetStat().ToString() + vbCrLf
End If
Next
If blockCount = 0 Then
message = message + "The resulting image HAS NOT been created."
Else
If save = blockCount 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 GetBlockCount() 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: GetBlockRight";
using (GdPictureSegmenter gdpictureSegmenter = new GdPictureSegmenter())
{
using (GdPictureImaging gdpictureImaging = new GdPictureImaging())
{
//Set up the image you want to process.
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 blockCount = gdpictureSegmenter.GetBlockCount(resultID);
if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
{
string message = "The number of detected blocks: ";
message = message + blockCount.ToString() + "\n";
int top = 0, left = 0, bottom = 0, right = 0, save = 0;
for (int i = 0; i < blockCount; i++)
{
top = gdpictureSegmenter.GetBlockTop(resultID, i);
if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
left = gdpictureSegmenter.GetBlockLeft(resultID, i);
if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
bottom = gdpictureSegmenter.GetBlockBottom(resultID, i);
if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
right = gdpictureSegmenter.GetBlockRight(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() + ".block has failed to get its position. Status: " + gdpictureSegmenter.GetStat().ToString() + "\n";
}
if (blockCount == 0)
{
message = message + "The resulting image HAS NOT been created.";
}
else
{
if (save == blockCount)
{
if (gdpictureImaging.SaveAsTIFF(image, "output.tif", 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 GetBlockCount() 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 blocks within the segmentation result. All blocks are subsequently color-coded and saved into the output file.
Dim caption As String = "Example: GetBlockRight"
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 blockCount As Integer = gdpictureSegmenter.GetBlockCount(resultID)
If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then
Dim message As String = "The number of detected blocks: "
message = message + blockCount.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 blockCount - 1
top = gdpictureSegmenter.GetBlockTop(resultID, i)
If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then left = gdpictureSegmenter.GetBlockLeft(resultID, i)
If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then bottom = gdpictureSegmenter.GetBlockBottom(resultID, i)
If gdpictureSegmenter.GetStat() = GdPictureStatus.OK Then right = gdpictureSegmenter.GetBlockRight(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() + ".block has failed to get its position. Status: " + gdpictureSegmenter.GetStat().ToString() + vbCrLf
End If
Next
If blockCount = 0 Then
message = message + "The resulting image HAS NOT been created."
Else
If save = blockCount 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 GetBlockCount() 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: GetBlockRight";
using (GdPictureSegmenter gdpictureSegmenter = new GdPictureSegmenter())
{
using (GdPictureImaging gdpictureImaging = new GdPictureImaging())
{
//Set up the image you want to process.
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 blockCount = gdpictureSegmenter.GetBlockCount(resultID);
if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
{
string message = "The number of detected blocks: ";
message = message + blockCount.ToString() + "\n";
int top = 0, left = 0, bottom = 0, right = 0, save = 0;
for (int i = 0; i < blockCount; i++)
{
top = gdpictureSegmenter.GetBlockTop(resultID, i);
if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
left = gdpictureSegmenter.GetBlockLeft(resultID, i);
if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
bottom = gdpictureSegmenter.GetBlockBottom(resultID, i);
if (gdpictureSegmenter.GetStat() == GdPictureStatus.OK)
right = gdpictureSegmenter.GetBlockRight(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() + ".block has failed to get its position. Status: " + gdpictureSegmenter.GetStat().ToString() + "\n";
}
if (blockCount == 0)
{
message = message + "The resulting image HAS NOT been created.";
}
else
{
if (save == blockCount)
{
if (gdpictureImaging.SaveAsTIFF(image, "output.tif", 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 GetBlockCount() 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