Extracts the candidate form fields from a bitmap using various options. There are two types of fields that can be extracted: OMR fields and text fields.
public class FindCandidateFormFieldsCommand : RasterCommand public class FindCandidateFormFieldsCommandextends RasterCommand
public:ref class FindCandidateFormFieldsCommand : RasterCommand
class FindCandidateFormFieldsCommand(RasterCommand): If an image is skewed, deskew it first before running FindCandidateFormFieldsCommand.
FindCandidateFormFieldsCommand supports 8-bit, 12-bit and 16-bit grayscale images, as well as 24-bit, 32-bit, 48-bit, and 64-bit colored images. This function does not support 32-bit grayscale images. If a 32-bit grayscale image is passed to this function, it returns the ERROR_GRAY32_UNSUPPORTED error code.
FindCandidateFormFieldsCommand does not support setting rectangular regions.
Runs the FindCandidateFormFieldsCommand on an image.
using Leadtools;using Leadtools.Codecs;using Leadtools.ImageProcessing.Core;public void FindCandidateFormFieldsCommandExample(){RasterCodecs codecs = new RasterCodecs();RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, @"Forms\Forms to be Recognized\OMR\AnswerSheet_Pattern.jpg"), 0, Leadtools.Codecs.CodecsLoadByteOrder.Bgr, 1, 1);FindCandidateFormFieldsCommand findFields = new FindCandidateFormFieldsCommand();findFields.HorizontalLineMinimumLength = 10;findFields.VerticalLineMinimumLength = 3;findFields.Run(image);TextField[] textFields = findFields.TextFieldAreas;OMRField[] omrFields = findFields.OMRFieldAreas;foreach (TextField field in textFields){TextFieldType textFieldType = field.FieldType;StringBuilder stringBuilder = new StringBuilder("** Text Field Properties **\n");stringBuilder.AppendLine("Filled: " + field.IsFilled.ToString());stringBuilder.AppendLine("Empty space, if there is any on the top or the bottom of the filled area: " + field.SpaceBounds[0].ToString());stringBuilder.AppendLine("Empty space, if there is any on the right side of the filled area: " + field.SpaceBounds[1].ToString());stringBuilder.AppendLine("TextFieldType: " + textFieldType.ToString());stringBuilder.AppendLine("Bounds: " + field.Bounds.ToString());stringBuilder.AppendLine("FilledAreaBounds: " + field.FilledAreaBounds.ToString());System.Diagnostics.Debug.WriteLine(stringBuilder.ToString());// Function TODO : Drawing rectangle field.Bounds// Function TODO : Drawing rectangle field.FilledAreaBounds}foreach (OMRField field in omrFields){if (field.FieldType == OMRFieldType.BoxOMR){// Function TODO : Drawing rectangle field.UnFilledBound}else{// Function TODO : Drawing circle field.UnFilledBound}StringBuilder stringBuilder = new StringBuilder("** OMR Field Properties **\n");stringBuilder.AppendLine("FilledBound: " + field.FilledBound.ToString());stringBuilder.AppendLine("FilledConfidence: " + field.FilledConfidence.ToString());stringBuilder.AppendLine("IsFilled: " + field.IsFilled.ToString());stringBuilder.AppendLine("OMRConfidence: " + field.OMRConfidence.ToString());stringBuilder.AppendLine("UnfilledBound: " + field.UnfilledBound.ToString());System.Diagnostics.Debug.WriteLine(stringBuilder.ToString());}image.Dispose();codecs.Dispose();}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";}
import static org.junit.Assert.assertTrue;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 leadtools.*;import leadtools.codecs.*;import leadtools.imageprocessing.core.*;public void findCandidateFormFieldsCommandExample() {final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";RasterCodecs codecs = new RasterCodecs();RasterImage image = codecs.load(combine(LEAD_VARS_IMAGES_DIR, "Forms\\Forms to be Recognized\\OMR\\AnswerSheet_Pattern.jpg"), 0,CodecsLoadByteOrder.BGR, 1, 1);FindCandidateFormFieldsCommand findFields = new FindCandidateFormFieldsCommand();findFields.setHorizontalLineMinimumLength((char) 10);findFields.setVerticalLineMinimumLength((char) 3);int flags = findFields.run(image);assertTrue(flags != 0);TextField[] textFields = findFields.getTextFieldAreas();OMRField[] omrFields = findFields.getOMRFieldAreas();for (TextField field : textFields) {TextFieldType textFieldType = field.getFieldType();StringBuilder sBuilder = new StringBuilder();sBuilder.append("** Text Field Properties **");sBuilder.append("\nFilled: " + field.isFilled());sBuilder.append("\nEmpty space, if there is any on the top or the bottom of the filled area: "+ field.getSpaceBounds()[0].toString());sBuilder.append("\nEmpty space, if there is any on the right side of the filled area: "+ field.getSpaceBounds()[1].toString());sBuilder.append("\nTextFieldType: " + textFieldType.toString());sBuilder.append("\nBounds: " + field.getBounds().toString());sBuilder.append("\nFilledAreaBound: " + field.getFilledAreaBounds().toString());System.out.println(sBuilder.toString() + "\n");}for (OMRField field : omrFields) {if (field.getFieldType() == OMRFieldType.BOX_OMR) {// Function TODO : Drawing rectangle field.UnFilledBound}{// Function TODO : Drawing circle field.UnFilledBound}StringBuilder sBuilder = new StringBuilder();sBuilder.append("** OMR Field Properties **");sBuilder.append("\nFilledBound: " + field.getFilledBound().toString());sBuilder.append("\nFilledConfidence: " + field.getFilledConfidence());sBuilder.append("\nIsFilled: " + field.isFilled());sBuilder.append("\nOMRConfidence: " + field.getOMRConfidence());sBuilder.append("\nUnfilledBound: " + field.getUnfilledBound().toString());System.out.println(sBuilder.toString());}image.dispose();codecs.dispose();}
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
