Dim caption As String = "Example: GetBlockTop"
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: GetBlockTop";
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();
}