public class HolePunchRemoveCommand : RasterCommand
public class HolePunchRemoveCommand
extends RasterCommand
public ref class HolePunchRemoveCommand : public RasterCommand
class HolePunchRemoveCommand(RasterCommand):
This command is available in the Document/Medical Toolkits.
For example, the following image must have the vertical line removed:
Once the image has been cleaned, as shown in the following figure, the hole punch can be removed:
For more information, refer to Cleaning Up 1-Bit Images.
Hole Punch Remove Function - Before
Hole Punch Remove Function - After
View additional platform support for this Hole Punch Remove function.
Run the HolePunchRemoveCommand on an image.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing.Core;
public void HolePunchRemoveCommandExample()
{
// Load an image
RasterCodecs codecs = new RasterCodecs();
codecs.ThrowExceptionsOnInvalidImages = true;
RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Clean.tif"));
// Prepare the command
HolePunchRemoveCommand command = new HolePunchRemoveCommand();
command.HolePunchRemove += new EventHandler<HolePunchRemoveCommandEventArgs>(HolePunchRemoveEvent_S1);
command.Flags = HolePunchRemoveCommandFlags.UseDpi | HolePunchRemoveCommandFlags.UseCount | HolePunchRemoveCommandFlags.UseLocation;
command.Location = HolePunchRemoveCommandLocation.Left;
command.MaximumHoleCount = 4;
command.MinimumHoleCount = 2;
command.Run(image);
}
private void HolePunchRemoveEvent_S1(object sender, HolePunchRemoveCommandEventArgs e)
{
MessageBox.Show("Size " + "( " + e.BoundingRectangle.Left + ", " + e.BoundingRectangle.Top + ") - " + "( " + e.BoundingRectangle.Right + ", " + e.BoundingRectangle.Bottom + ")" +
"\n Hole Index " + e.HoleIndex.ToString() +
"\n Holes Total Count " + e.HoleTotalCount.ToString() +
"\n Black Count " + e.BlackCount.ToString() +
"\n White Count " + e.WhiteCount.ToString());
e.Status = RemoveStatus.Remove;
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}
import java.io.File;
import java.io.IOException;
import org.junit.*;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import static org.junit.Assert.*;
import leadtools.*;
import leadtools.codecs.*;
import leadtools.imageprocessing.core.*;
public void holePunchRemoveCommandExample() {
final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";
// Load an image
RasterCodecs codecs = new RasterCodecs();
codecs.setThrowExceptionsOnInvalidImages(true);
RasterImage image = codecs.load(combine(LEAD_VARS_IMAGES_DIR, "Clean.tif"), 1, CodecsLoadByteOrder.BGR, 1, 1);
// Prepare the command
HolePunchRemoveCommand command = new HolePunchRemoveCommand();
command.addHolePunchRemoveCommandListener(holePunchRemoveEvent_S1);
command.setFlags(HolePunchRemoveCommandFlags.USE_DPI.getValue() | HolePunchRemoveCommandFlags.USE_COUNT.getValue()
| HolePunchRemoveCommandFlags.USE_LOCATION.getValue());
assertTrue(command.getFlags() >= 0);
command.setLocation(HolePunchRemoveCommandLocation.LEFT);
command.setMaximumHoleCount(4);
command.setMinimumHoleCount(2);
assertTrue(command.getLocation() == HolePunchRemoveCommandLocation.LEFT && command.getMaximumHoleCount() == 4
&& command.getMinimumHoleCount() == 2);
command.run(image);
codecs.save(image, combine(LEAD_VARS_IMAGES_DIR, "Result.jpg"), RasterImageFormat.JPEG, 24);
assertTrue(new File(combine(LEAD_VARS_IMAGES_DIR, "Result.jpg")).exists());
System.out.println("Command run and image exported to: " + combine(LEAD_VARS_IMAGES_DIR, "Result.jpg"));
}
HolePunchRemoveCommandListener holePunchRemoveEvent_S1 = new HolePunchRemoveCommandListener() {
@Override
public void onHolePunchRemoveEvent(HolePunchRemoveCommandEvent e) {
System.out
.println("Size " + "( " + e.getBoundingRectangle().getLeft() + ", " + e.getBoundingRectangle().getTop()
+ ") - " + "( " + e.getBoundingRectangle().getRight() + ", " + e.getBoundingRectangle().getBottom()
+ ")" + "\n Hole Index " + e.getHoleIndex() + "\n Holes Total Count " + e.getHoleTotalCount()
+ "\n Black Count " + e.getBlackCount() + "\n White Count " + e.getWhiteCount());
e.setStatus(RemoveStatus.REMOVE);
}
};
HolePunchRemoveCommand Members
Leadtools.ImageProcessing.Core Namespace
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document