10688 lines
361 KiB
Plaintext
10688 lines
361 KiB
Plaintext
(* ImageEn Build 7.0.0.06.2637 @ 7-4-17 14:58:42.679 *)
|
|
(*
|
|
Copyright (c) 1998-2017 by Carlotta Calandra. All rights reserved.
|
|
Copyright (c) 2011-2017 by Xequte Software.
|
|
|
|
This software comes without express or implied warranty.
|
|
In no case shall the author be liable for any damage or unwanted behavior of any
|
|
computer hardware and/or software.
|
|
|
|
Author grants you the right to include the component
|
|
in your application, whether COMMERCIAL, SHAREWARE, or FREEWARE.
|
|
|
|
ImageEn, IEvolution and ImageEn ActiveX may not be included in any
|
|
commercial, shareware or freeware libraries or components.
|
|
|
|
www.ImageEn.com
|
|
*)
|
|
|
|
(*
|
|
File version 1010
|
|
*)
|
|
|
|
|
|
unit ievision;
|
|
|
|
{$R-}
|
|
{$Q-}
|
|
{$Z4}
|
|
|
|
{$I ie.inc}
|
|
|
|
|
|
{$ifdef IEVISION}
|
|
|
|
|
|
interface
|
|
|
|
|
|
uses
|
|
Types, Windows, SysUtils, Classes, Math, ActiveX;
|
|
|
|
|
|
|
|
const
|
|
|
|
{!!
|
|
<FS>IEVision Embedded Classifiers
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
IEVC_EYE = ':EYE';
|
|
IEVC_EYE_TREE_EYE_GLASSES = ':EYETREEEYEGLASSES';
|
|
IEVC_FRONTAL_FACE_ALT = ':FRONTALFACEALT';
|
|
IEVC_FRONTAL_FACE_ALT_2 = ':FRONTALFACEALT2';
|
|
IEVC_FRONTAL_FACE_ALT_TREE = ':FRONTALFACEALTTREE';
|
|
IEVC_FRONTAL_FACE_DEFAULT = ':FRONTALFACEDEFAULT';
|
|
IEVC_FULL_BODY = ':FULLBODY';
|
|
IEVC_LOWER_BODY = ':LOWERBODY';
|
|
IEVC_PROFILE_FACE = ':PROFILEFACE';
|
|
IEVC_UPPER_BODY = ':UPPERBODY';
|
|
IEVC_LEFT_EYE_2_SPLITS = ':LEFTEYE2SPLITS';
|
|
IEVC_RIGHT_EYE_2_SPLITS = ':RIGHTEYE2SPLITS';
|
|
IEVC_LBP_FRONTAL_FACE = ':LBPFRONTALFACE';
|
|
IEVC_CASCADE_SMILE = ':CASCADESMILE';
|
|
IEVC_FRONTAL_CAT_FACE = ':FRONTALCATFACE';
|
|
IEVC_FRONTAL_CAT_FACE_EXT = ':FRONTALCATFACEEXTENDED';
|
|
IEVC_LICENSE_PLATE_RUS = ':LICENSEPLATERUS';
|
|
IEVC_RUSSIAN_PLATE_NUMBER = ':RUSSIANPLATENUMBER';
|
|
|
|
IEVC_ALL_CLASSIFIERS = IEVC_EYE + #13#10 +
|
|
IEVC_EYE_TREE_EYE_GLASSES + #13#10 +
|
|
IEVC_FRONTAL_FACE_ALT + #13#10 +
|
|
IEVC_FRONTAL_FACE_ALT_2 + #13#10 +
|
|
IEVC_FRONTAL_FACE_ALT_TREE + #13#10 +
|
|
IEVC_FRONTAL_FACE_DEFAULT + #13#10 +
|
|
IEVC_FULL_BODY + #13#10 +
|
|
IEVC_LOWER_BODY + #13#10 +
|
|
IEVC_PROFILE_FACE + #13#10 +
|
|
IEVC_UPPER_BODY + #13#10 +
|
|
IEVC_LEFT_EYE_2_SPLITS + #13#10 +
|
|
IEVC_RIGHT_EYE_2_SPLITS + #13#10 +
|
|
IEVC_LBP_FRONTAL_FACE + #13#10 +
|
|
IEVC_CASCADE_SMILE + #13#10 +
|
|
IEVC_FRONTAL_CAT_FACE + #13#10 +
|
|
IEVC_FRONTAL_CAT_FACE_EXT + #13#10 +
|
|
IEVC_LICENSE_PLATE_RUS + #13#10 +
|
|
IEVC_RUSSIAN_PLATE_NUMBER ;
|
|
{!!}
|
|
|
|
type
|
|
|
|
|
|
///////////////////////////////////////////////////
|
|
// primitive types
|
|
|
|
uint8_t = byte;
|
|
uint16_t = word;
|
|
uint32_t = longword;
|
|
int8_t = shortint;
|
|
int16_t = smallint;
|
|
int32_t = integer;
|
|
int64_t = int64;
|
|
bool32 = longbool;
|
|
|
|
uint8_p = ^uint8_t;
|
|
uint16_p = ^uint16_t;
|
|
uint32_p = ^uint32_t;
|
|
int8_p = ^int8_t;
|
|
int16_p = ^int16_t;
|
|
int32_p = ^int32_t;
|
|
int64_p = ^int64_t;
|
|
bool32_p = ^bool32;
|
|
|
|
float_p = ^single;
|
|
double_p = ^double;
|
|
|
|
|
|
///////////////////////////////////////////////////
|
|
// enums
|
|
|
|
{$WARNINGS OFF}
|
|
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionLibraryInfo
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionLibraryInfo = (
|
|
ievLIBNAME = 0,
|
|
ievLIBVERSION = 1,
|
|
ievLIBPLATFORM = 2,
|
|
ievLIBFILENAME = 3,
|
|
ievISTRIAL = 4
|
|
);
|
|
{!!}
|
|
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionChannelFormat
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionChannelFormat = (
|
|
ievUINT8 = 0, // 8 bit unsigned
|
|
ievSINT8 = 1, // 8 bit signed
|
|
ievUINT16 = 2, // 16 bit unsigned
|
|
ievSINT16 = 3, // 16 bit signed
|
|
ievSINT32 = 4, // 32 bit signed
|
|
ievFLOAT32 = 5, // 32 bit floating point
|
|
ievFLOAT64 = 6, // 64 bit floating point
|
|
ievUINT1 = $A0000001 // 1 bit per pixel
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionCvtColorCode
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionCvtColorCode = (
|
|
ievBGR2BGRA = 0,
|
|
ievRGB2RGBA = 0,
|
|
ievBGRA2BGR = 1,
|
|
ievRGBA2RGB = 1,
|
|
ievBGR2RGBA = 2,
|
|
ievRGB2BGRA = 2,
|
|
ievRGBA2BGR = 3,
|
|
ievBGRA2RGB = 3,
|
|
ievBGR2RGB = 4,
|
|
ievRGB2BGR = 4,
|
|
ievBGRA2RGBA = 5,
|
|
ievRGBA2BGRA = 5,
|
|
ievBGR2GRAY = 6,
|
|
ievRGB2GRAY = 7,
|
|
ievGRAY2BGR = 8,
|
|
ievGRAY2RGB = 8,
|
|
ievGRAY2BGRA = 9,
|
|
ievGRAY2RGBA = 9,
|
|
ievBGRA2GRAY = 10,
|
|
ievRGBA2GRAY = 11,
|
|
ievBGR2BGR565 = 12,
|
|
ievRGB2BGR565 = 13,
|
|
ievBGR5652BGR = 14,
|
|
ievBGR5652RGB = 15,
|
|
ievBGRA2BGR565 = 16,
|
|
ievRGBA2BGR565 = 17,
|
|
ievBGR5652BGRA = 18,
|
|
ievBGR5652RGBA = 19,
|
|
ievGRAY2BGR565 = 20,
|
|
ievBGR5652GRAY = 21,
|
|
ievBGR2BGR555 = 22,
|
|
ievRGB2BGR555 = 23,
|
|
ievBGR5552BGR = 24,
|
|
ievBGR5552RGB = 25,
|
|
ievBGRA2BGR555 = 26,
|
|
ievRGBA2BGR555 = 27,
|
|
ievBGR5552BGRA = 28,
|
|
ievBGR5552RGBA = 29,
|
|
ievGRAY2BGR555 = 30,
|
|
ievBGR5552GRAY = 31,
|
|
ievBGR2XYZ = 32,
|
|
ievRGB2XYZ = 33,
|
|
ievXYZ2BGR = 34,
|
|
ievXYZ2RGB = 35,
|
|
ievBGR2YCrCb = 36,
|
|
ievRGB2YCrCb = 37,
|
|
ievYCrCb2BGR = 38,
|
|
ievYCrCb2RGB = 39,
|
|
ievBGR2HSV = 40,
|
|
ievRGB2HSV = 41,
|
|
ievRGB2Lab = 45,
|
|
ievBGR2Lab = 44,
|
|
ievBayerBG2BGR = 46,
|
|
ievBayerGB2BGR = 47,
|
|
ievBayerRG2BGR = 48,
|
|
ievBayerGR2BGR = 49,
|
|
ievBayerBG2RGB = 48,
|
|
ievBayerGB2RGB = 49,
|
|
ievBayerRG2RGB = 46,
|
|
ievBayerGR2RGB = 47,
|
|
ievBGR2Luv = 50,
|
|
ievRGB2Luv = 51,
|
|
ievBGR2HLS = 52,
|
|
ievRGB2HLS = 53,
|
|
ievHSV2BGR = 54,
|
|
ievHSV2RGB = 55,
|
|
ievLab2BGR = 56,
|
|
ievLab2RGB = 57,
|
|
ievLuv2BGR = 58,
|
|
ievLuv2RGB = 59,
|
|
ievHLS2BGR = 60,
|
|
ievHLS2RGB = 61
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionInterpolation
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionInterpolation = (
|
|
ievNEAREST = 0,
|
|
ievLINEAR = 1,
|
|
ievCUBIC = 2,
|
|
ievAREA = 3,
|
|
ievLANCZOS4 = 4
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionFlipMode
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionFlipMode = (
|
|
ievX_AXIS = 0, // flip X axis
|
|
ievY_AXIS = 1, // flip Y axis
|
|
ievXY_AXISES = -1 // flip X and Y axis
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionFileStreamMode
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionFileStreamMode = (
|
|
ievREAD = 0, // read only
|
|
ievCREATE = 1, // create file
|
|
ievREADWRITE = 2 // read and write
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionSeekOffset
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionSeekOffset = (
|
|
ievSET = 0, // set absolute position
|
|
ievCUR = 1, // set from current position
|
|
ievEND = 2 // set from the end
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionFileFormat
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionFileFormat = (
|
|
ievTIFF = 1, // TIFF
|
|
ievJPEG = 3, // JPEG
|
|
ievBMP = 5, // BMP
|
|
ievPNG = 8, // PNG
|
|
ievPXM = 12, // PXM
|
|
ievJ2K = 14, // JPEG2000
|
|
ievRAS = 30, // Sun Rasters
|
|
ievHEX = 100 // ASCII HEX digits, separating planes
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionHaarInvert
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionHaarInvert = (
|
|
ievNOINVERT = 0, // do not invert samples
|
|
ievINVERT = 1, // always invert samples
|
|
ievRANDOM_INVERT = $7FFFFFFF // random invert samples
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionHaarMode
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionHaarMode = (
|
|
ievBASIC = 0,
|
|
ievCORE = 1,
|
|
ievALL = 2
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionHaarBoostType
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionHaarBoostType = (
|
|
ievDISCRETE_ADABOOST = 0,
|
|
ievREAL_ADABOOST = 1,
|
|
ievLOGITBOOST = 2,
|
|
ievGENTLE_ADABOOST = 3
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionHaarStumpError
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionHaarStumpError = (
|
|
ievMISCLASSIFICATION_ERROR = 0,
|
|
ievGINI_ERROR = 1,
|
|
ievENTROPY_ERROR = 2
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTreeFormat
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionPropertyTreeFormat = (
|
|
ievXML = 0,
|
|
ievINFO = 1,
|
|
ievINI = 2,
|
|
ievJSON = 3
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionBorderType
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionBorderType = (
|
|
ievBORDER_CONSTANT = 0,
|
|
ievBORDER_REPLICATE = 1,
|
|
ievBORDER_REFLECT = 2,
|
|
ievBORDER_WRAP = 3,
|
|
ievBORDER_REFLECT_101 = 4,
|
|
ievBORDER_TRANSPARENT = 5,
|
|
ievBORDER_ISOLATED = 16
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionSmoothType
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionSmoothType = (
|
|
ievBLUR_NO_SCALE = 0,
|
|
ievBLUR = 1,
|
|
ievGAUSSIAN = 2,
|
|
ievMEDIAN = 3,
|
|
ievBILATERAL = 4
|
|
);
|
|
|
|
{!!}
|
|
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionHistogramType
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionHistogramType = (
|
|
ievARRAY = 0,
|
|
ievSPARSE = 1
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionSortOrder
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionSortOrder = (
|
|
ievASCENDING = 0,
|
|
ievDESCENDING = 1
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionCovarFlags
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionCovarFlags = (
|
|
ievSCRAMBLED = 0,
|
|
ievNORMAL = 1,
|
|
ievUSE_AVG = 2,
|
|
ievSCALE = 4,
|
|
ievROWS = 8,
|
|
ievCOLS = 16
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionCmpOp
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionCmpOp = (
|
|
ievEQUAL = 0,
|
|
ievGREATER = 1,
|
|
ievGREATER_EQUAL = 2,
|
|
ievLESS = 3,
|
|
ievLESS_EQUAL = 4,
|
|
ievNOT_EQUAL = 5
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionDCTFlags
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionDCTFlags = (
|
|
ievDCT_FORWARD = 0,
|
|
ievDCT_INVERSE = 1,
|
|
ievDCT_ROWS = 4
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionDFTFlags
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionDFTFlags = (
|
|
ievDFT_FORWARD = 0,
|
|
ievDFT_INVERSE = 1,
|
|
ievDFT_SCALE = 2,
|
|
ievDFT_INVERSE_SCALE = 3,
|
|
ievDFT_ROWS = 4
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionGEMMFlags
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionGEMMFlags = (
|
|
ievGEMM_NONE = 0,
|
|
ievGEMM_A_T = 1,
|
|
ievGEMM_B_T = 2,
|
|
ievGEMM_C_T = 4
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionInvertMethod
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionInvertMethod = (
|
|
ievLU = 0,
|
|
ievSVD = 1,
|
|
ievSVD_SYM = 2
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionReduceOp
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionReduceOp = (
|
|
ievREDUCE_SUM = 0,
|
|
ievREDUCE_AVG = 1,
|
|
ievREDUCE_MAX = 2,
|
|
ievREDUCE_MIN = 3
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionSolveMethod
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionSolveMethod = (
|
|
ievSOLVE_LU = 0,
|
|
ievSOLVE_SVD = 1,
|
|
ievSOLVE_SVD_SYM = 2
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionSVBFlags
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionSVBFlags = (
|
|
ievSVB_NONE = 0,
|
|
ievSVB_MODIFY_A = 1,
|
|
ievSVB_U_T = 2,
|
|
ievSVB_V_T = 4
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionSVDFlags
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionSVDFlags = (
|
|
ievSVD_NONE = 0,
|
|
ievSVD_MODIFY_A = 1,
|
|
ievSVD_U_T = 2,
|
|
ievSVD_V_T = 4
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionContourRetrMode
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionContourRetrMode = (
|
|
ievEXTERNAL = 0,
|
|
ievLIST = 1,
|
|
ievCCOMP = 2,
|
|
ievTREE = 3
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionContourApproxMethod
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionContourApproxMethod = (
|
|
ievCHAIN_CODE = 0,
|
|
ievCHAIN_APPROX_NONE = 1,
|
|
ievCHAIN_APPROX_SIMPLE = 2,
|
|
ievCHAIN_APPROX_TC89_L1 = 3,
|
|
ievCHAIN_APPROX_TC89_KCOS = 4,
|
|
ievLINK_RUNS = 5
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionInpaintMethod
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionInpaintMethod = (
|
|
ievINPAINT_NS = 0,
|
|
ievINPAINT_TELEA = 1
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRPageSegmentationMode
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionOCRPageSegmentationMode = (
|
|
ievOCROSD_ONLY = 0, // Orientation and script detection only.
|
|
ievOCRAUTO_OSD = 1, // Automatic page segmentation with orientation and script detection. (OSD)
|
|
ievOCRAUTO_ONLY = 2, // Automatic page segmentation, but no OSD, or OCR.
|
|
ievOCRAUTO = 3, // Fully automatic page segmentation, but no OSD.
|
|
ievOCRSINGLE_COLUMN = 4, // Assume a single column of text of variable sizes.
|
|
ievOCRSINGLE_BLOCK_VERT_TEXT = 5, // Assume a single uniform block of vertically aligned text.
|
|
ievOCRSINGLE_BLOCK = 6, // Assume a single uniform block of text. (Default.)
|
|
ievOCRSINGLE_LINE = 7, // Treat the image as a single text line.
|
|
ievOCRSINGLE_WORD = 8, // Treat the image as a single word.
|
|
ievOCRCIRCLE_WORD = 9, // Treat the image as a single word in a circle.
|
|
ievOCRSINGLE_CHAR = 10 // Treat the image as a single character.
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRScriptDirection
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionOCRScriptDirection = (
|
|
ievOCRDIR_NEUTRAL = 0, // Text contains only neutral characters.
|
|
ievOCRDIR_LEFT_TO_RIGHT = 1, // Text contains no Right-to-Left characters.
|
|
ievOCRDIR_RIGHT_TO_LEFT = 2, // Text contains no Left-to-Right characters.
|
|
ievOCRDIR_MIX = 3 // Text contains a mixture of left-to-right
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionOCROrientation
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionOCROrientation = (
|
|
ievOCROrientPAGE_UP = 0,
|
|
ievOCROrientPAGE_RIGHT = 1,
|
|
ievOCROrientPAGE_DOWN = 2,
|
|
ievOCROrientPAGE_LEFT = 3
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRWritingDirection
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionOCRWritingDirection = (
|
|
ievOCRWritDirLEFT_TO_RIGHT = 0,
|
|
ievOCRWritDirRIGHT_TO_LEFT = 1,
|
|
ievOCRWritDirTOP_TO_BOTTOM = 2
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRTextlineOrder
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionOCRTextlineOrder = (
|
|
ievOCRTxtlineOrderLEFT_TO_RIGHT = 0,
|
|
ievOCRTxtlineOrderRIGHT_TO_LEFT = 1,
|
|
ievOCRTxtlineOrderTOP_TO_BOTTOM = 2
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionOCREngine
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionOCREngine = (
|
|
ievOCRFAST = 0,
|
|
ievOCRCUBE = 1,
|
|
ievOCRACCURATE = 2
|
|
);
|
|
|
|
<FM>Description<FN>
|
|
The engine(s) used for OCR recognition:
|
|
<TABLE>
|
|
<R> <H>Type</H> <H>Description</H> </R>
|
|
<R> <C><FC>ievOCRFAST<FN></C> <C>Use only the base OCR engine for faster processing</C> </R>
|
|
<R> <C><FC>ievOCRCUBE<FN></C> <C>Use the Cube OCR engine for better accuracy (slower)</C> </R>
|
|
<R> <C><FC>ievOCRACCURATE<FN></C> <C>Use both the base and Cube OCR engines for best accuracy</C> </R>
|
|
</TABLE>
|
|
|
|
Note: If you use the base OCR engine (<FC>ievOCRFAST<FN>) you will only require the *.trained data support file, e.g. eng.traineddata for processing of an English language document.
|
|
Use of <FC>ievOCRCUBE<FN> and <FC>ievOCRACCURATE<FN> require you to also enclude the *.cube.* files. e.g. eng.cube.word-freq, eng.cube.size, etc.
|
|
|
|
!!}
|
|
TIEVisionOCREngine = (
|
|
ievOCRFAST = 0, // don't use cube, fastest engine
|
|
ievOCRCUBE = 1, // use cube only, better accuracy, but slower
|
|
ievOCRACCURATE = 2 // use base and cube engine, best accuracy
|
|
);
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionTermCriteriaType
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
type TIEVisionTermCriteriaType = int32_t;
|
|
const ievITER = 1;
|
|
const ievNUMBER = 1;
|
|
const ievEPS = 2;
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionMulSpectrumsFlags
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
type TIEVisionMulSpectrumsFlags = int32_t;
|
|
const ievMUL_ROWS = 4;
|
|
const ievMUL_CONJ = 8;
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionHaarDetectObjectsFlags
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
type TIEVisionHaarDetectObjectsFlags = int32_t;
|
|
const ievNONE = 0;
|
|
const ievDO_CANNY_PRUNING = 1;
|
|
const ievSCALE_IMAGE = 2;
|
|
const ievFIND_BIGGEST_OBJECT = 4;
|
|
const ievDO_ROUGH_SEARCH = 8;
|
|
{!!}
|
|
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionStitchingStatus
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
type TIEVisionStitchingStatus = (
|
|
ievSSOK = 0,
|
|
ievSSERR_NEED_MORE_IMGS = 1,
|
|
ievSSERR_HOMOGRAPHY_EST_FAIL = 2,
|
|
ievSSERR_CAMERA_PARAMS_ADJUST_FAIL = 3
|
|
);
|
|
{!!}
|
|
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionThresholdType
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
type TIEVisionThresholdType = int32_t;
|
|
const ievTHRESH_BINARY = 0;
|
|
const ievTHRESH_BINARY_INV = 1;
|
|
const ievTHRESH_TRUNC = 2;
|
|
const ievTHRESH_TOZERO = 3;
|
|
const ievTHRESH_TOZERO_INV = 4;
|
|
const ievTHRESH_OTSU = 8; // must be combined with other values
|
|
const ievTHRESH_TRIANGLE = 16; // must be combined with other values
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionAdaptiveMethod
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
type TIEVisionAdaptiveMethod = (
|
|
ievADAPTIVE_THRESH_MEAN_C = 0,
|
|
ievADAPTIVE_THRESH_GAUSSIAN_C = 1
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionStructuringElementShape
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionStructuringElementShape = (
|
|
ievMORPH_RECT = 0,
|
|
ievMORPH_CROSS = 1,
|
|
ievMORPH_ELLIPSE = 2
|
|
);
|
|
{!!}
|
|
|
|
|
|
{$WARNINGS ON}
|
|
|
|
|
|
type
|
|
|
|
///////////////////////////////////////////////////
|
|
// structures
|
|
|
|
{!!
|
|
<FS>TIEVisionRect
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionRect = packed record
|
|
x: int32_t;
|
|
y: int32_t;
|
|
width: int32_t;
|
|
height: int32_t;
|
|
end;
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>PIEVisionRect
|
|
|
|
<FM>Declaration<FC>
|
|
PIEVisionRect = ^<A TIEVisionRect>;
|
|
!!}
|
|
PIEVisionRect = ^TIEVisionRect;
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionSize
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionSize = packed record
|
|
width: int32_t;
|
|
height: int32_t;
|
|
end;
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionSize2f
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionSize2f = packed record
|
|
width: single;
|
|
height: single;
|
|
end;
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionPoint
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionPoint = packed record
|
|
x: int32_t;
|
|
y: int32_t;
|
|
end;
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionPoint2f
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionPoint2f = packed record
|
|
x: single;
|
|
y: single;
|
|
end;
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionScalar
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionScalar = packed record
|
|
val: array [0..3] of double;
|
|
end;
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionScalarInt32
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionScalarInt32 = packed record
|
|
val: array [0..3] of int32_t;
|
|
end;
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionFloatPair
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionFloatPair = packed record
|
|
first: single;
|
|
second: single;
|
|
end;
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionTermCriteria
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionTermCriteria = packed record
|
|
ctype: <A TIEVisionTermCriteriaType>;
|
|
maxIter: int32_t;
|
|
epsilon: double;
|
|
end;
|
|
!!}
|
|
TIEVisionTermCriteria = packed record
|
|
ctype: TIEVisionTermCriteriaType;
|
|
maxIter: int32_t;
|
|
epsilon: double;
|
|
end;
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionBox2D
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionBox2D = packed record
|
|
centerX, centerY: single;
|
|
width, height: single;
|
|
angle: single;
|
|
end;
|
|
{!!}
|
|
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionRotatedRect
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionRotatedRect = packed record
|
|
center: <A TIEVisionPoint2f>; // mass center of the rectangle
|
|
size: <A TIEVisionSize2f>; // size
|
|
angle: single; // rotation angle in degrees
|
|
end;
|
|
!!}
|
|
TIEVisionRotatedRect = packed record
|
|
center: TIEVisionPoint2f; // mass center of the rectangle
|
|
size: TIEVisionSize2f; // size
|
|
angle: single; // rotation angle in degrees
|
|
end;
|
|
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionRGB8
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionRGB8 = packed record
|
|
r: uint8_t;
|
|
g: uint8_t;
|
|
b: uint8_t;
|
|
end;
|
|
{!!}
|
|
|
|
|
|
|
|
{!!
|
|
<FS>PIEVisionRGB8
|
|
|
|
<FM>Declaration<FC>
|
|
PIEVisionRGB8 = ^<A TIEVisionRGB8>;
|
|
!!}
|
|
PIEVisionRGB8 = ^TIEVisionRGB8;
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionRGB16
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionRGB16 = packed record
|
|
r: uint16_t;
|
|
g: uint16_t;
|
|
b: uint16_t;
|
|
end;
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>PIEVisionRGB16
|
|
|
|
<FM>Declaration<FC>
|
|
PIEVisionRGB16 = ^<A TIEVisionRGB16>;
|
|
!!}
|
|
PIEVisionRGB16 = ^TIEVisionRGB16;
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionBGR8
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionBGR8 = packed record
|
|
b: uint8_t;
|
|
g: uint8_t;
|
|
r: uint8_t;
|
|
end;
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>PIEVisionBGR8
|
|
|
|
<FM>Declaration<FC>
|
|
PIEVisionBGR8 = ^<A TIEVisionBGR8>;
|
|
!!}
|
|
PIEVisionBGR8 = ^TIEVisionBGR8;
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionBGR16
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
TIEVisionBGR16 = packed record
|
|
b: uint16_t;
|
|
g: uint16_t;
|
|
r: uint16_t;
|
|
end;
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>PIEVisionBGR16
|
|
|
|
<FM>Declaration<FC>
|
|
PIEVisionBGR16 = ^<A TIEVisionBGR16>;
|
|
!!}
|
|
PIEVisionBGR16 = ^TIEVisionBGR16;
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRBox
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionOCRBox = packed record
|
|
text: uint32_t;
|
|
cost: single;
|
|
rect: <A TIEVisionRect>;
|
|
end;
|
|
!!}
|
|
TIEVisionOCRBox = packed record
|
|
text: uint32_t;
|
|
cost: single;
|
|
rect: TIEVisionRect;
|
|
end;
|
|
|
|
|
|
{!!
|
|
<FS>PIEVisionOCRBox
|
|
|
|
<FM>Declaration<FC>
|
|
PIEVisionOCRBox = ^<A TIEVisionOCRBox>;
|
|
!!}
|
|
PIEVisionOCRBox = ^TIEVisionOCRBox;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionBase
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionBase = interface(IInterface)
|
|
|
|
<FM>Description<FN>
|
|
This is the base interface for each IEVision object.
|
|
It handles reference counting and automatic disposing.
|
|
!!}
|
|
// must be stdcall
|
|
TIEVisionBase = interface(IInterface)
|
|
['{1DECDC99-E370-4E33-B5E5-EB7F84AAFAE2}']
|
|
procedure dispose(); stdcall;
|
|
function getRefCount(): int32_t; stdcall;
|
|
procedure internal_destructor; cdecl; // don't use!
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionString
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionString = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store an ANSI string.
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionString.append></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionString.at></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionString.c_str></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionString.length></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionString.operatorASSIGN></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionString.operatorEQUAL></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionString.saveToFile></C> </R>
|
|
</TABLE>
|
|
|
|
!!}
|
|
TIEVisionString = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionString.length
|
|
|
|
<FM>Declaration<FC>
|
|
function length(): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the string length.
|
|
!!}
|
|
function length(wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionString.operatorASSIGN
|
|
|
|
<FM>Declaration<FC>
|
|
procedure operatorASSIGN(src: <A TIEVisionString>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Replaces current string with the content of source string.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>The source string.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
string1.operatorASSIGN(string2); // equiv. to "string1 := string2"
|
|
!!}
|
|
procedure operatorASSIGN(src: TIEVisionString; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionString.operatorEQUAL
|
|
|
|
<FM>Declaration<FC>
|
|
function operatorEQUAL(src: <A TIEVisionString>): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Compares current string with the content of source string.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>The source string.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
string1.operatorEQUAL(string2); // equiv. to "string1 = string2"
|
|
!!}
|
|
function operatorEQUAL(src: TIEVisionString; wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionString.at
|
|
|
|
<FM>Declaration<FC>
|
|
function at(pos: int32_t): AnsiChar; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the character at specified position.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Character index (0=first character).</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
c = string1.at(0); // equiv. to "c := string1[0]"
|
|
!!}
|
|
function at(pos: int32_t; wantExceptions: bool32 = false): AnsiChar; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionString.append
|
|
|
|
<FM>Declaration<FC>
|
|
procedure append(src: <A TIEVisionString>); overload; safecall;
|
|
procedure append(src: PAnsiChar); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends a string or ANSI string.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>String to append.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
string1.append(string2); // equiv. to string1 := string1 + string2;
|
|
string1.append('hello'); // equiv. to string1 := string1 + 'hello';
|
|
!!}
|
|
procedure append(src: TIEVisionString; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure append(src: PAnsiChar; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionString.c_str
|
|
|
|
<FM>Declaration<FC>
|
|
function c_str(): PAnsiChar; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns a zero terminated string.
|
|
|
|
<FM>Example<FC>
|
|
ShowMessage( AnsiString(string1.c_str()) );
|
|
!!}
|
|
function c_str(wantExceptions: bool32 = false): PAnsiChar; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionString.saveToFile
|
|
|
|
<FM>Declaration<FC>
|
|
procedure saveToFile(filename: PAnsiChar); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Saves string content to a file.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>filename<FN></C> <C>The output filename with path.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
string1.saveToFile('output.txt');
|
|
!!}
|
|
procedure saveToFile(filename: PAnsiChar; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionWString
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionWString = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store a wide string.
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionWString.append></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionWString.at></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionWString.c_str></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionWString.convertFromUTF8></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionWString.length></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionWString.operatorASSIGN></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionWString.operatorEQUAL></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionWString.saveToFile></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionWString = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionWString.length
|
|
|
|
<FM>Declaration<FC>
|
|
function length(): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the string length.
|
|
!!}
|
|
function length(wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionWString.operatorASSIGN
|
|
|
|
<FM>Declaration<FC>
|
|
procedure operatorASSIGN(src: <A TIEVisionWString>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Replaces the current string with a source string.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>The source string.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
string1.operatorASSIGN(string2); // equiv. to "string1 := string2"
|
|
!!}
|
|
procedure operatorASSIGN(src: TIEVisionWString; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionWString.operatorEQUAL
|
|
|
|
<FM>Declaration<FC>
|
|
function operatorEQUAL(src: <A TIEVisionWString>): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Compares the current string with a source string.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>The source string.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
string1.operatorEQUAL(string2); // equiv. to "string1 = string2"
|
|
!!}
|
|
function operatorEQUAL(src: TIEVisionWString; wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionWString.at
|
|
|
|
<FM>Declaration<FC>
|
|
function at(pos: int32_t): WideChar; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the character at a specified position.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Character index (0=first character).</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
c = string1.at(0); // equiv. to "c := string1[0]"
|
|
!!}
|
|
function at(pos: int32_t; wantExceptions: bool32 = false): WideChar; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionWString.append
|
|
|
|
<FM>Declaration<FC>
|
|
procedure append(src: <A TIEVisionWString>); overload; safecall;
|
|
procedure append(src: PWideChar); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends a string or wide string.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>String to append.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
string1.append(string2); // equiv. to string1 := string1 + string2;
|
|
string1.append('hello'); // equiv. to string1 := string1 + 'hello';
|
|
!!}
|
|
procedure append(src: TIEVisionWString; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure append(src: PWideChar; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionWString.c_str
|
|
|
|
<FM>Declaration<FC>
|
|
function c_str(): PWideChar; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns a zero terminated string.
|
|
|
|
<FM>Example<FC>
|
|
ShowMessage( WideString(string1.c_str()) );
|
|
!!}
|
|
function c_str(wantExceptions: bool32 = false): PWideChar; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionWString.saveToFile
|
|
|
|
<FM>Declaration<FC>
|
|
procedure saveToFile(filename: PAnsiChar); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Saves string content to a file as UTF-16 (little endian).
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>filename<FN></C> <C>The output filename with path.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
string1.saveToFile('output.txt');
|
|
!!}
|
|
procedure saveToFile(filename: PAnsiChar; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionWString.convertFromUTF8
|
|
|
|
<FM>Declaration<FC>
|
|
procedure convertFromUTF8(src: PAnsiChar); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Converts UTF8 zero terminated string to UTF16.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Source UTF8 string.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure convertFromUTF8(src: PAnsiChar; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionBaseVector
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionBaseVector = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store a generic vector. This is the base class for <A TIEVisionVectorString>, <A TIEVisionVectorInt32>, etc...
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionVectorString>
|
|
- <A TIEVisionVectorInt32>
|
|
- <A TIEVisionVectorByte>
|
|
- <A TIEVisionVectorFloatPair>
|
|
- <A TIEVisionVectorPoint>
|
|
- <A TIEVisionVectorRect>
|
|
- <A TIEVisionVectorDouble>
|
|
- <A TIEVisionVectorOCRBox>
|
|
- <A TIEVisionVectorImageRef>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBaseVector.size></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBaseVector.operatorASSIGN></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBaseVector.max_size></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBaseVector.resize></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBaseVector.capacity></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBaseVector.empty></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBaseVector.reserve></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBaseVector.pop_back></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBaseVector.erase></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBaseVector.swap></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBaseVector.clear></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBaseVector.sort></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBaseVector.data></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionBaseVector = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionBaseVector.size
|
|
|
|
<FM>Declaration<FC>
|
|
function size(): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Represents the number of items in the vector.
|
|
!!}
|
|
function size(wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBaseVector.operatorASSIGN
|
|
|
|
<FM>Declaration<FC>
|
|
procedure operatorASSIGN(src: <A TIEVisionBaseVector>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Replaces current vector with the source vector.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>The source vector.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure operatorASSIGN(src: TIEVisionBaseVector; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBaseVector.max_size
|
|
|
|
<FM>Declaration<FC>
|
|
function max_size(): uint32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the maximum number of items that this vector can contain (checks free memory).
|
|
!!}
|
|
function max_size(wantExceptions: bool32 = false): uint32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBaseVector.resize
|
|
|
|
<FM>Declaration<FC>
|
|
procedure resize(sz: uint32_t); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Resizes the vector to the specified size.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>sz<FN></C> <C>The new vector size.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure resize(sz: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBaseVector.capacity
|
|
|
|
<FM>Declaration<FC>
|
|
function capacity(): uint32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the size of allocated storage for the container.
|
|
!!}
|
|
function capacity(wantExceptions: bool32 = false): uint32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBaseVector.empty
|
|
|
|
<FM>Declaration<FC>
|
|
function empty(): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if the vector is empty.
|
|
!!}
|
|
function empty(wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBaseVector.reserve
|
|
|
|
<FM>Declaration<FC>
|
|
procedure reserve(n: uint32_t); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Reserves a minimum length of storage for this vector, allocating space if necessary.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>n<FN></C> <C>The minimum length of storage to be allocated for the vector.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure reserve(n: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBaseVector.pop_back
|
|
|
|
<FM>Declaration<FC>
|
|
procedure pop_back(); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Removes the last element.
|
|
!!}
|
|
procedure pop_back(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBaseVector.erase
|
|
|
|
<FM>Declaration<FC>
|
|
function erase(position: uint32_t): uint32_t; overload; safecall;
|
|
function erase(first: uint32_t; last: uint32_t): uint32_t; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Removes a specified item or a range of items.
|
|
Returns the first element remaining beyond any elements removed.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>position<FN></C> <C>The item index to remove.</C> </R>
|
|
<R> <C><FC>first<FN></C> <C>Begin of range to erase.</C> </R>
|
|
<R> <C><FC>last<FN></C> <C>End of range (not included) to erase.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// removes item 0 (first item)
|
|
vector1.erase(0);
|
|
|
|
// removes item 0 up to 3 (included)
|
|
vector1.erase(0, 4);
|
|
!!}
|
|
function erase(position: uint32_t; wantExceptions: bool32 = false): uint32_t; overload; safecall;
|
|
function erase(first: uint32_t; last: uint32_t; wantExceptions: bool32 = false): uint32_t; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBaseVector.swap
|
|
|
|
<FM>Declaration<FC>
|
|
procedure swap(vec: <A TIEVisionBaseVector>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Swaps the content of this vector with the specified one.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>vec<FN></C> <C>Other vector to swap.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure swap(vec: TIEVisionBaseVector; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBaseVector.clear
|
|
|
|
<FM>Declaration<FC>
|
|
procedure clear(); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Removes all elements.
|
|
!!}
|
|
procedure clear(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBaseVector.sort
|
|
|
|
<FM>Declaration<FC>
|
|
procedure sort(order: <A TIEVisionSortOrder> = ievASCENDING); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Sorts elements of the vector.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>order<FN></C> <C>Sorting order.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
vector1.sort(ievASCENDING);
|
|
!!}
|
|
procedure sort(order: TIEVisionSortOrder = ievASCENDING; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBaseVector.data
|
|
|
|
<FM>Declaration<FC>
|
|
function data(): pointer; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the raw pointer to the vector.
|
|
!!}
|
|
function data(wantExceptions: bool32 = false): pointer; safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorString
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionVectorString = interface(<A TIEVisionBaseVector>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store a vector of strings (<A TIEVisionString>).
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorString.getString></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorString.getCString></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorString.push_back></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorString.setString></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionVectorString = interface(TIEVisionBaseVector)
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorString.getString
|
|
|
|
<FM>Declaration<FC>
|
|
function getString(pos: int32_t): <A TIEVisionString>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the string at specified index.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Index of string to return (0=first string).</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getString(pos: int32_t; wantExceptions: bool32 = false): TIEVisionString; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorString.getCString
|
|
|
|
<FM>Declaration<FC>
|
|
function getCString(pos: int32_t): PAnsiChar; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns an ANSI zero terminated string.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Index of string to return (0=first string).</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
ShowMessage(AnsiString(vector1.getCString(0)));
|
|
!!}
|
|
function getCString(pos: int32_t; wantExceptions: bool32 = false): PAnsiChar; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorString.push_back
|
|
|
|
<FM>Declaration<FC>
|
|
procedure push_back(str: <A TIEVisionString>); overload; safecall;
|
|
procedure push_back(str: PAnsiChar); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends a string object or an ANSI string.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>str<FN></C> <C>String to append.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
vector1.push_back("hello");
|
|
!!}
|
|
procedure push_back(str: TIEVisionString; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure push_back(str: PAnsiChar; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorString.setString
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setString(pos: int32_t; value: <A TIEVisionString>); overload; safecall;
|
|
procedure setString(pos: int32_t; value: PAnsiChar); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Replaces/Sets an item with the specified string object or ANSI stirng.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index to set.</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>String object or ANSI string.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
i := vector1.push_back('before');
|
|
vector1.setString(i, 'replaced');
|
|
!!}
|
|
procedure setString(pos: int32_t; value: TIEVisionString; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure setString(pos: int32_t; value: PAnsiChar; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorInt32
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionVectorInt32 = interface(<A TIEVisionBaseVector>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store a vector of integers (32 bit).
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorInt32.getInt32></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorInt32.push_back></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorInt32.setInt32></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionVectorInt32 = interface(TIEVisionBaseVector)
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorInt32.getInt32
|
|
|
|
<FM>Declaration<FC>
|
|
function getInt32(pos: int32_t): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the specified item.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index (0 = first item).</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getInt32(pos: int32_t; wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorInt32.push_back
|
|
|
|
<FM>Declaration<FC>
|
|
procedure push_back(value: int32_t); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends a new integer.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Integer to add.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure push_back(value: int32_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorInt32.setInt32
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setInt32(pos: int32_t; value: int32_t); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Sets the item value.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index to set.</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Integer value.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
intvector.setInt32(0, 123); // like: intvector[0] := 123
|
|
!!}
|
|
procedure setInt32(pos: int32_t; value: int32_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorByte
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionVectorByte = interface(<A TIEVisionBaseVector>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store a vector of bytes (unsigned 8 bit).
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorByte.getUInt8></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorByte.push_back></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorByte.setUInt8></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionVectorByte = interface(TIEVisionBaseVector)
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorByte.getUInt8
|
|
|
|
<FM>Declaration<FC>
|
|
function getUInt8(pos: int32_t): uint8_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns value of the specified item.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index (0 = first item).</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getUInt8(pos: int32_t; wantExceptions: bool32 = false): uint8_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorByte.push_back
|
|
|
|
<FM>Declaration<FC>
|
|
procedure push_back(value: uint8_t); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends a new byte.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Byte value to add.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure push_back(value: uint8_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorByte.setUInt8
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setUInt8(pos: int32_t; value: uint8_t); safecall;
|
|
|
|
<FM>Description<FN>
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index to set.</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Value to set.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure setUInt8(pos: int32_t; value: uint8_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorFloatPair
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionVectorFloatPair = interface(<A TIEVisionBaseVector>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store a vector of float pairs (two 32 bit floats, <A TIEVisionFloatPair>).
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorFloatPair.getFloatPair></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorFloatPair.push_back></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorFloatPair.setFloatPair></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionVectorFloatPair = interface(TIEVisionBaseVector)
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorFloatPair.getFloatPair
|
|
|
|
<FM>Declaration<FC>
|
|
function getFloatPair(pos: int32_t): <A TIEVisionFloatPair>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the float pair at the specified index.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index to retrieve.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getFloatPair(pos: int32_t; wantExceptions: bool32 = false): TIEVisionFloatPair; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorFloatPair.push_back
|
|
|
|
<FM>Declaration<FC>
|
|
procedure push_back(value: <A TIEVisionFloatPair>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends a new float pair value.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Float pair to add.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
vector1.push_back( IEVisionFloatPair(1.2, 1.3) );
|
|
!!}
|
|
procedure push_back(value: TIEVisionFloatPair; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorFloatPair.setFloatPair
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setFloatPair(pos: int32_t; value: <A TIEVisionFloatPair>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Sets a new value for the specified item.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index to set (0 = first item).</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Item value.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
vector1.setFloatPair(0, IEVisionFloatPair(1.2, 1.3) );
|
|
!!}
|
|
procedure setFloatPair(pos: int32_t; value: TIEVisionFloatPair; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorScalarInt32
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionVectorScalarInt32 = interface(<A TIEVisionBaseVector>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store a vector of four integers (four 32 bit integers, <A TIEVisionScalarInt32>).
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorScalarInt32.getScalarInt32></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorScalarInt32.push_back></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorScalarInt32.setScalarInt32></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionVectorScalarInt32 = interface(TIEVisionBaseVector)
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorScalarInt32.getScalarInt32
|
|
|
|
<FM>Declaration<FC>
|
|
function getScalarInt32(pos: int32_t; wantExceptions: bool32 = false): <A TIEVisionScalarInt32>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the four integers scalar at the specified index.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index to retrieve.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getScalarInt32(pos: int32_t; wantExceptions: bool32 = false): TIEVisionScalarInt32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorScalarInt32.push_back
|
|
|
|
<FM>Declaration<FC>
|
|
procedure push_back(value: <A TIEVisionScalarInt32>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends a new value.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Four integers scalar to add.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure push_back(value: TIEVisionScalarInt32; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorScalarInt32.setScalarInt32
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setScalarInt32(pos: int32_t; value: <A TIEVisionScalarInt32>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Sets a new value for the specified item.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index to set (0 = first item).</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Item value.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure setScalarInt32(pos: int32_t; value: TIEVisionScalarInt32; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorPoint
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionVectorPoint = interface(<A TIEVisionBaseVector>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store a vector of points (<A TIEVisionPoint>).
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorPoint.getPoint></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorPoint.push_back></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorPoint.setPoint></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionVectorPoint = interface(TIEVisionBaseVector)
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorPoint.getPoint
|
|
|
|
<FM>Declaration<FC>
|
|
function getPoint(pos: int32_t): <A TIEVisionPoint>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the point at specified position.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getPoint(pos: int32_t; wantExceptions: bool32 = false): TIEVisionPoint; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorPoint.push_back
|
|
|
|
<FM>Declaration<FC>
|
|
procedure push_back(value: <A TIEVisionPoint>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends a new point to the vector.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Point to add.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
vector1.push_back( IEVisionPoint(10, 20) );
|
|
!!}
|
|
procedure push_back(value: TIEVisionPoint; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorPoint.setPoint
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setPoint(pos: int32_t; value: <A TIEVisionPoint>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Replaces/Sets an item value.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index.</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Value of the item.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
vector1.setPoint(0, IEVisionPoint(10, 20));
|
|
!!}
|
|
procedure setPoint(pos: int32_t; value: TIEVisionPoint; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorRect
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionVectorRect = interface(<A TIEVisionBaseVector>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store a vector of rectangles (<A TIEVisionRect>).
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorRect.getRect></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorRect.push_back></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorRect.setRect></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionVectorRect = interface(TIEVisionBaseVector)
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorRect.getRect
|
|
|
|
<FM>Declaration<FC>
|
|
function getRect(pos: int32_t): <A TIEVisionRect>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the specified item.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index (0 = first item).</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getRect(pos: int32_t; wantExceptions: bool32 = false): TIEVisionRect; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorRect.push_back
|
|
|
|
<FM>Declaration<FC>
|
|
procedure push_back(value: <A TIEVisionRect>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends a new item.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>The rectangle to append.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
vector1.push_back(IEVisionRect(0, 0, 200, 200));
|
|
!!}
|
|
procedure push_back(value: TIEVisionRect; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorRect.setRect
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setRect(pos: int32_t; value: <A TIEVisionRect>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Replaces/Sets an item value.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index (0 = first item).</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Value to set.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
vector1.setRect(IEVisionRect(0, 0, 200, 200));
|
|
!!}
|
|
procedure setRect(pos: int32_t; value: TIEVisionRect; wantExceptions: bool32 = false); safecall;
|
|
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorDouble
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionVectorDouble = interface(<A TIEVisionBaseVector>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store a vector of doubles (64 bit floating point).
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorDouble.getDouble></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorDouble.push_back></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorDouble.setDouble></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionVectorDouble = interface(TIEVisionBaseVector)
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorDouble.getDouble
|
|
|
|
<FM>Declaration<FC>
|
|
function getDouble(pos: int32_t): double; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the specified item.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getDouble(pos: int32_t; wantExceptions: bool32 = false): double; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorDouble.push_back
|
|
|
|
<FM>Declaration<FC>
|
|
procedure push_back(value: double); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends a new item.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Value to add.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure push_back(value: double; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorDouble.setDouble
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setDouble(pos: int32_t; value: double); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Replaces/Sets a value at specified position.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index.</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Value to set.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure setDouble(pos: int32_t; value: double; wantExceptions: bool32 = false); safecall;
|
|
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorOCRBox
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionVectorOCRBox = interface(<A TIEVisionBaseVector>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store a vector of OCR boxes (<A TIEVisionOCRBox>).
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorOCRBox.getOCRBox></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorOCRBox.push_back></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorOCRBox.setOCRBox></C> </R>
|
|
</TABLE>
|
|
|
|
!!}
|
|
TIEVisionVectorOCRBox = interface(TIEVisionBaseVector)
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorOCRBox.getOCRBox
|
|
|
|
<FM>Declaration<FC>
|
|
function getOCRBox(pos: int32_t): <A TIEVisionOCRBox>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the specified item.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getOCRBox(pos: int32_t; wantExceptions: bool32 = false): TIEVisionOCRBox; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorOCRBox.push_back
|
|
|
|
<FM>Declaration<FC>
|
|
procedure push_back(value: <A TIEVisionOCRBox>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends a new item.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Item to append.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure push_back(value: TIEVisionOCRBox; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorOCRBox.setOCRBox
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setOCRBox(pos: int32_t; value: <A TIEVisionOCRBox>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Replaces/Sets the specified item.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index.</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Value to set.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure setOCRBox(pos: int32_t; value: TIEVisionOCRBox; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRWordBox
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionOCRWordBox = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store an ocr word box (a box that contains a word).
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionOCRWordBox.getBox></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionOCRWordBox.getText></C> </R>
|
|
</TABLE>
|
|
|
|
!!}
|
|
TIEVisionOCRWordBox = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRWordBox.getText
|
|
|
|
<FM>Declaration<FC>
|
|
function getText(): <A TIEVisionWString>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the text associated to this box.
|
|
!!}
|
|
function getText(wantExceptions: bool32 = false): TIEVisionWString; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRWordBox.getBox
|
|
|
|
<FM>Declaration<FC>
|
|
function getBox(): <A TIEVisionRect>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the bounding rectangle of this box.
|
|
!!}
|
|
function getBox(wantExceptions: bool32 = false): TIEVisionRect; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRWordBox.getConfidence
|
|
|
|
<FM>Declaration<FC>
|
|
function getConfidence(): single; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns confidence (as percentage) of this word.
|
|
!!}
|
|
function getConfidence(wantExceptions: bool32 = false): single; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRWordBox.isBold
|
|
|
|
<FM>Declaration<FC>
|
|
function isBold(): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if current word has Bold attribute.
|
|
!!}
|
|
function isBold(wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRWordBox.isItalic
|
|
|
|
<FM>Declaration<FC>
|
|
function isItalic(): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if current word has Italic attribute.
|
|
!!}
|
|
function isItalic(wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRWordBox.isUnderlined
|
|
|
|
<FM>Declaration<FC>
|
|
function isUnderlined(): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if current word has Underlined attribute.
|
|
!!}
|
|
function isUnderlined(wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRWordBox.isMonospace
|
|
|
|
<FM>Declaration<FC>
|
|
function isMonospace(): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if current word is monospaced.
|
|
!!}
|
|
function isMonospace(wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRWordBox.isSerif
|
|
|
|
<FM>Declaration<FC>
|
|
function isSerif(): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if current word is Serif.
|
|
!!}
|
|
function isSerif(wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRWordBox.isSmallCaps
|
|
|
|
<FM>Declaration<FC>
|
|
function isSmallCaps(): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if current word is smallcaps.
|
|
!!}
|
|
function isSmallCaps(wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRWordBox.getPointSize
|
|
|
|
<FM>Declaration<FC>
|
|
function getPointSize(): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns point size in printers points (1/72 inch).
|
|
!!}
|
|
function getPointSize(wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRWordBox.getLanguage
|
|
|
|
<FM>Declaration<FC>
|
|
function getLanguage(): <A TIEVisionString>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the language code (ie 'eng') used to recognize this word.
|
|
!!}
|
|
function getLanguage(wantExceptions: bool32 = false): TIEVisionString; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCRWordBox.getScriptDirection
|
|
|
|
<FM>Declaration<FC>
|
|
function getScriptDirection(): <A TIEVisionOCRScriptDirection>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Return the overall directionality of this word.
|
|
!!}
|
|
function getScriptDirection(wantExceptions: bool32 = false): TIEVisionOCRScriptDirection; safecall;
|
|
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
TIEVisionImage = interface; // forward declaration
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorImageRef
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionVectorImageRef = interface(<A TIEVisionBaseVector>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store a vector of image references (<A TIEVisionImage>).
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorImageRef.getImage></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorImageRef.push_back></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorImageRef.setImage></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionVectorImageRef = interface(TIEVisionBaseVector)
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorImageRef.getImage
|
|
|
|
<FM>Declaration<FC>
|
|
function getImage(pos: int32_t): <A TIEVisionImage>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the image reference at specified index.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Image index.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getImage(pos: int32_t; wantExceptions: bool32 = false): TIEVisionImage; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorImageRef.push_back
|
|
|
|
<FM>Declaration<FC>
|
|
procedure push_back(value: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends a new image reference.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Image reference to set.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
imagelist.push_back( image1 );
|
|
!!}
|
|
procedure push_back(value: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorImageRef.setImage
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setImage(pos: int32_t; value: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Replaces/Set the image reference.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Image index.</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Image reference to set.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
imagelist.setImage( image1 );
|
|
!!}
|
|
procedure setImage(pos: int32_t; value: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorObjRef
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionVectorObjRef = interface(<A TIEVisionBaseVector>)
|
|
|
|
<FM>Description<FN>
|
|
An object that exposes this interface can store a vector of object references (inherited from <A TIEVisionBase>).
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorObjRef.getObj></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorObjRef.push_back></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionVectorObjRef.setObj></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionVectorObjRef = interface(TIEVisionBaseVector)
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorObjRef.getObj
|
|
|
|
<FM>Declaration<FC>
|
|
function getObj(pos: int32_t): <A TIEVisionBase>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the object at specified index.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Object index.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getObj(pos: int32_t; wantExceptions: bool32 = false): TIEVisionBase; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorObjRef.push_back
|
|
|
|
<FM>Declaration<FC>
|
|
procedure push_back(value: <A TIEVisionBase>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends a new object reference.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Object reference to add.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure push_back(value: TIEVisionBase; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionVectorObjRef.setObj
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setObj(pos: int32_t; value: <A TIEVisionBase>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Replaces/Sets an object reference.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>pos<FN></C> <C>Item index.</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Object reference to set.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure setObj(pos: int32_t; value: TIEVisionBase; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionStream
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionStream = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This is the base interface for all objects with streaming features.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionFileStream>
|
|
- <A TIEVisionTempFileStream>
|
|
- <A TIEVisionMemoryStream>
|
|
- <A TIEVisionExistingMemoryStream>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionStream.eof></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionStream.loadFromFile></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionStream.read></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionStream.saveToFile></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionStream.seek></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionStream.silent_getc></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionStream.silent_read></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionStream.silent_write></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionStream.size></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionStream.tell></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionStream.write></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionStream = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionStream.seek
|
|
|
|
<FM>Declaration<FC>
|
|
procedure seek(offset: int64; whence: <A TIEVisionSeekOffset>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Moves stream to the specified position.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>offset<FN></C> <C>Absolute or relative offset.</C> </R>
|
|
<R> <C><FC>whence<FN></C> <C>Where the offset starts.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
stream1.seek(0, ievSET); // reset position to zero
|
|
!!}
|
|
procedure seek(offset: int64; whence: TIEVisionSeekOffset; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionStream.tell
|
|
|
|
<FM>Declaration<FC>
|
|
function tell(): int64; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the current stream position.
|
|
!!}
|
|
function tell(wantExceptions: bool32 = false): int64; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionStream.silent_read
|
|
|
|
<FM>Declaration<FC>
|
|
function silent_read(ptr: pointer; size: int64): int64; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Reads buffer from stream without raising exceptions on failure.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>ptr<FN></C> <C>Pointer to destination buffer.</C> </R>
|
|
<R> <C><FC>size<FN></C> <C>Number of bytes to read.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function silent_read(ptr: pointer; size: int64; wantExceptions: bool32 = false): int64; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionStream.silent_write
|
|
|
|
<FM>Declaration<FC>
|
|
function silent_write(ptr: pointer; size: int64): int64; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Writes buffer to stream without raising exceptions on failure.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>ptr<FN></C> <C>Point to source buffer.</C> </R>
|
|
<R> <C><FC>size<FN></C> <C>Number of bytes to write.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function silent_write(ptr: pointer; size: int64; wantExceptions: bool32 = false): int64; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionStream.silent_getc
|
|
|
|
<FM>Declaration<FC>
|
|
function silent_getc(): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Reads a char (8 bit) from stream.
|
|
!!}
|
|
function silent_getc(wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionStream.eof
|
|
|
|
<FM>Declaration<FC>
|
|
function eof(): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Tests whether the file position is at the end of a file.
|
|
!!}
|
|
function eof(wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionStream.saveToFile
|
|
|
|
<FM>Declaration<FC>
|
|
procedure saveToFile(filename: PAnsiChar); overload; safecall;
|
|
procedure saveToFile(filename: PWideChar); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Saves the stream to the specified file.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>filename<FN></C> <C>Destination path and filename.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
stream1.saveToFile('output.dat');
|
|
!!}
|
|
procedure saveToFile(filename: PAnsiChar; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure saveToFile(filename: PWideChar; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionStream.loadFromFile
|
|
|
|
<FM>Declaration<FC>
|
|
procedure loadFromFile(filename: PAnsiChar); overload; safecall;
|
|
procedure loadFromFile(filename: PWideChar); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Loads the stream from the specified file.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>filename<FN></C> <C>Source path and filename.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
stream1.loadFromFile('input.dat');
|
|
!!}
|
|
procedure loadFromFile(filename: PAnsiChar; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure loadFromFile(filename: PWideChar; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionStream.read
|
|
|
|
<FM>Declaration<FC>
|
|
procedure read(ptr: pointer; size: int64); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Reads buffer from stream.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>ptr<FN></C> <C>Pointer to destination buffer.</C> </R>
|
|
<R> <C><FC>size<FN></C> <C>Number of bytes to read.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure read(ptr: pointer; size: int64; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionStream.write
|
|
|
|
<FM>Declaration<FC>
|
|
procedure write(ptr: pointer; size: int64); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Writes buffer to stream.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>ptr<FN></C> <C>Pointer to source buffer.</C> </R>
|
|
<R> <C><FC>XXX<FN></C> <C>Number of bytes to write.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure write(ptr: pointer; size: int64; wantExceptions: bool32 = false); safecall;
|
|
|
|
// for internal use
|
|
procedure iostream; cdecl;
|
|
|
|
{!!
|
|
<FS>TIEVisionStream.size
|
|
|
|
<FM>Declaration<FC>
|
|
function size(): int64; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the stream size.
|
|
!!}
|
|
function size(wantExceptions: bool32 = false): int64; safecall;
|
|
|
|
// for internal use
|
|
procedure convertToCPlusPlus(outputStream: TIEVisionStream; className: PAnsiChar; compressed: bool32; wantExceptions: bool32 = false); safecall;
|
|
|
|
end;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionFileStream
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionFileStream = interface(<A TIEVisionStream>)
|
|
|
|
<FM>Description<FN>
|
|
This is the base interface for all objects with file streaming features.
|
|
This interface allows you to open/create files and access them using a streaming interface.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionFileStream>
|
|
- <A TIEVisionTempFileStream>
|
|
- <A TIEVisionMemoryStream>
|
|
- <A TIEVisionExistingMemoryStream>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionFileStream.close></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionFileStream.open></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionFileStream.open></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionFileStream = interface(TIEVisionStream)
|
|
|
|
{!!
|
|
<FS>TIEVisionFileStream.close
|
|
|
|
<FM>Declaration<FC>
|
|
procedure close(); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Closes the file.
|
|
!!}
|
|
procedure close(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionFileStream.open
|
|
|
|
<FM>Declaration<FC>
|
|
procedure open(filename: PAnsiChar; mode: <A TIEVisionFileStreamMode>); overload; safecall;
|
|
procedure open(filename: PWideChar; mode: <A TIEVisionFileStreamMode>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Opens/Creates a file.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>filename<FN></C> <C>Path and name of the file to open.</C> </R>
|
|
<R> <C><FC>mode<FN></C> <C>Opening mode.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// opens 'input.jpg' in read only mode
|
|
filestream := IEVisionLib.createFileStream();
|
|
filestream.open('input.jpg', ievREAD);
|
|
|
|
// creates 'output.jpg'
|
|
filestream := IEVisionLib.createFileStream();
|
|
filestream.open('output.jpg', ievCREATE);
|
|
!!}
|
|
procedure open(filename: PAnsiChar; mode: TIEVisionFileStreamMode; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure open(filename: PWideChar; mode: TIEVisionFileStreamMode; wantExceptions: bool32 = false); overload; safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionTempFileStream
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionTempFileStream = interface(<A TIEVisionFileStream>)
|
|
|
|
<FM>Description<FN>
|
|
This is the base interface for all objects with temporary file streaming features.
|
|
This interface allows you to create a temporary file that is removed when the class is disposed. The file name is chosen automatically.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionFileStream>
|
|
- <A TIEVisionTempFileStream>
|
|
- <A TIEVisionMemoryStream>
|
|
- <A TIEVisionExistingMemoryStream>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionTempFileStream.getFilename></C> </R>
|
|
</TABLE>
|
|
|
|
!!}
|
|
TIEVisionTempFileStream = interface(TIEVisionFileStream)
|
|
|
|
{!!
|
|
<FS>TIEVisionTempFileStream.getFilename
|
|
|
|
<FM>Declaration<FC>
|
|
function getFilename(): PAnsiChar; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the automatically chosen file name.
|
|
!!}
|
|
function getFilename(wantExceptions: bool32 = false): PAnsiChar; safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionMemoryStream
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionMemoryStream = interface(<A TIEVisionStream>)
|
|
|
|
<FM>Description<FN>
|
|
This is the base interface for all objects with memory streaming features.
|
|
This interface allows you to create a memory stream.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionFileStream>
|
|
- <A TIEVisionTempFileStream>
|
|
- <A TIEVisionMemoryStream>
|
|
- <A TIEVisionExistingMemoryStream>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMemoryStream.clear></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMemoryStream.reserve></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionMemoryStream = interface(TIEVisionStream)
|
|
|
|
{!!
|
|
<FS>TIEVisionMemoryStream.clear
|
|
|
|
<FM>Declaration<FC>
|
|
procedure clear(); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Empties the memory stream.
|
|
!!}
|
|
procedure clear(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMemoryStream.reserve
|
|
|
|
<FM>Declaration<FC>
|
|
procedure reserve(count: int32_t); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Allocates the specified number of bytes. The actual size of the stream doesn't change.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>count<FN></C> <C>Number of bytes to allocate.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure reserve(count: int32_t; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionExistingMemoryStream
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionExistingMemoryStream = interface(<A TIEVisionStream>)
|
|
|
|
<FM>Description<FN>
|
|
This is the base interface for all objects with existing memory streaming features.
|
|
This interface allows you to create a memory stream from existing stream.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionFileStream>
|
|
- <A TIEVisionTempFileStream>
|
|
- <A TIEVisionMemoryStream>
|
|
- <A TIEVisionExistingMemoryStream>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionExistingMemoryStream.reset></C> </R>
|
|
</TABLE>
|
|
|
|
!!}
|
|
TIEVisionExistingMemoryStream = interface(TIEVisionStream)
|
|
|
|
{!!
|
|
<FS>TIEVisionExistingMemoryStream.reset
|
|
|
|
<FM>Declaration<FC>
|
|
procedure reset(existingBuffer: pointer; existingBufferSize: int32_t); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Sets a new buffer for the memory stream.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>existingBuffer<FN></C> <C>Memory buffer pointer.</C> </R>
|
|
<R> <C><FC>existingBufferSize<FN></C> <C>Memory buffer size in bytes.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure reset(existingBuffer: pointer; existingBufferSize: int32_t; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionTempFileName
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionTempFileName = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to create temporary file name. The file name is chosen automatically.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionTempFileName>
|
|
- <A TIEVisionTempDirName>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionTempFileName.c_str></C> </R>
|
|
</TABLE>
|
|
|
|
!!}
|
|
TIEVisionTempFileName = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionTempFileName.c_str
|
|
|
|
<FM>Declaration<FC>
|
|
function c_str(): PAnsiChar; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the automatically chosen file name.
|
|
!!}
|
|
function c_str(wantExceptions: bool32 = false): PAnsiChar; safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionTempDirName
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionTempDirName = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to create temporary directory name. The directory name is chosen automatically.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionTempFileName>
|
|
- <A TIEVisionTempDirName>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionTempDirName.c_str></C> </R>
|
|
</TABLE>
|
|
|
|
!!}
|
|
TIEVisionTempDirName = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionTempDirName.c_str
|
|
|
|
<FM>Declaration<FC>
|
|
function c_str(): PAnsiChar; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the automatically chosen file name.
|
|
!!}
|
|
function c_str(wantExceptions: bool32 = false): PAnsiChar; safecall;
|
|
end;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionPropertyTree = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to create a property tree.
|
|
A property tree contains several types of data (doubles, ints, other sub property trees, etc...) associating a key for each value.
|
|
Keys are structured as paths (ie. "image.size.width") separated by periods.
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.clear></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.erase></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.exists></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.getDouble></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.getInt32></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.getPropertyTree></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.getRect></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.getString></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.load></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.operatorASSIGN></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.operatorEQUAL></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.putDouble></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.putInt32></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.putPropertyTree></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.putRect></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.putString></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.save></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.size></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.sort></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPropertyTree.swap></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionPropertyTree = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.size
|
|
|
|
<FM>Declaration<FC>
|
|
function size(): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the number of properties
|
|
!!}
|
|
function size(wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.clear
|
|
|
|
<FM>Declaration<FC>
|
|
procedure clear(); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Removes all properties.
|
|
!!}
|
|
procedure clear(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.save
|
|
|
|
<FM>Declaration<FC>
|
|
procedure save(stream: <A TIEVisionStream>; format: <A TIEVisionPropertyTreeFormat> = ievXML); overload; safecall;
|
|
procedure save(filename: PAnsiChar; format: <A TIEVisionPropertyTreeFormat> = ievXML); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Saves the entire property tree to file or stream, using the specified format.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionPropertyTree.load>
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>stream<FN></C> <C>Stream to write.</C> </R>
|
|
<R> <C><FC>format<FN></C> <C>Format of the output.</C> </R>
|
|
<R> <C><FC>filename<FN></C> <C>Filename to write.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure save(stream: TIEVisionStream; format: TIEVisionPropertyTreeFormat = ievXML; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure save(filename: PAnsiChar; format: TIEVisionPropertyTreeFormat = ievXML; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.load
|
|
|
|
<FM>Declaration<FC>
|
|
procedure load(stream: <A TIEVisionStream>; format: <A TIEVisionPropertyTreeFormat> = ievXML); overload; safecall;
|
|
procedure load(filename: PAnsiChar; format: <A TIEVisionPropertyTreeFormat> = ievXML); overload; safecall;
|
|
|
|
|
|
<FM>Description<FN>
|
|
Loads a property tree from file or stream, using the specified format.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionPropertyTree.save>
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>stream<FN></C> <C>Stream to read.</C> </R>
|
|
<R> <C><FC>format<FN></C> <C>Format of the input.</C> </R>
|
|
<R> <C><FC>filename<FN></C> <C>Filename to read.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure load(stream: TIEVisionStream; format: TIEVisionPropertyTreeFormat = ievXML; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure load(filename: PAnsiChar; format: TIEVisionPropertyTreeFormat = ievXML; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.operatorEQUAL
|
|
|
|
<FM>Declaration<FC>
|
|
function operatorEQUAL(rhs: <A TIEVisionPropertyTree>): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Compares this property tree with the specified one.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>The other property tree to compare.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function operatorEQUAL(rhs: TIEVisionPropertyTree; wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.operatorASSIGN
|
|
|
|
<FM>Declaration<FC>
|
|
procedure operatorASSIGN(rhs: TIEVisionPropertyTree); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Clones the content of specified parameter.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>Property tree to clone.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure operatorASSIGN(rhs: TIEVisionPropertyTree; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.swap
|
|
|
|
<FM>Declaration<FC>
|
|
procedure swap(rhs: <A TIEVisionPropertyTree>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Swaps this property tree with the specified one.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>ros<FN></C> <C>The other property tree to swap.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure swap(rhs: TIEVisionPropertyTree; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.exists
|
|
|
|
<FM>Declaration<FC>
|
|
function exists(keypath: PAnsiChar): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if the key exists.
|
|
A key path is a list of words separated by periods (ie: "image.size.width").
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>keypath<FN></C> <C>Path of the key to find.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
if propertytree.exists('image.size.width') then
|
|
....
|
|
!!}
|
|
function exists(keypath: PAnsiChar; wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.erase
|
|
|
|
<FM>Declaration<FC>
|
|
procedure erase(keypath: PAnsiChar); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Removes the specified key.
|
|
A key path is a list of words separated by periods (ie: "image.size.width").
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>keypath<FN></C> <C>Path of the key to erase.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
propertytree.erase('image.size.width');
|
|
!!}
|
|
procedure erase(keypath: PAnsiChar; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.sort
|
|
|
|
<FM>Declaration<FC>
|
|
procedure sort(); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Sorts all keys of the property tree.
|
|
!!}
|
|
procedure sort(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.getPropertyTree
|
|
|
|
<FM>Declaration<FC>
|
|
function getPropertyTree(keypath: PAnsiChar): <A TIEVisionPropertyTree>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Retrieves value of the specified key. The value must be of <A TIEVisionPropertyTree> interface type.
|
|
A key path is a list of words separated by periods (ie: "image.size.width").
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>keypath<FN></C> <C>Path of the key to retrieve.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
propertytree2 := propertytree1.getPropertyTree('image.properties');
|
|
!!}
|
|
function getPropertyTree(keypath: PAnsiChar; wantExceptions: bool32 = false): TIEVisionPropertyTree; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.putPropertyTree
|
|
|
|
<FM>Declaration<FC>
|
|
procedure putPropertyTree(keypath: PAnsiChar; propertyTree: <A TIEVisionPropertyTree>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Puts a property tree into this property tree, using the specified key path.
|
|
A key path is a list of words separated by periods (ie: "image.size.width").
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>keypath<FN></C> <C>Path of the key to put.</C> </R>
|
|
<R> <C><FC>propertyTree<FN></C> <C>Value to put.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure putPropertyTree(keypath: PAnsiChar; propertyTree: TIEVisionPropertyTree; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.putString
|
|
|
|
<FM>Declaration<FC>
|
|
procedure putString(keypath: PAnsiChar; value: PAnsiChar); overload; safecall;
|
|
procedure putString(keypath: PAnsiChar; value: <A TIEVisionString>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Puts an ANSI string or string object into this property tree, using the specified key path.
|
|
A key path is a list of words separated by periods (ie: "image.size.width").
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>keypath<FN></C> <C>Path of the key to put.</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Value to put.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
propertytree1.putString('image.size.width', 640);
|
|
propertytree1.putString('image.size.height', 480);
|
|
!!}
|
|
procedure putString(keypath: PAnsiChar; value: PAnsiChar; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure putString(keypath: PAnsiChar; value: TIEVisionString; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.getString
|
|
|
|
<FM>Declaration<FC>
|
|
function getString(keypath: PAnsiChar): <A TIEVisionString>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Retrieves value of the specified key. The value must be of <A TIEVisionString> interface type.
|
|
A key path is a list of words separated by periods (ie: "image.property.caption").
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>keypath<FN></C> <C>Path of the key to get.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
ShowMessage( AnsiString( propertytree1.getString('image.property.caption').c_str() ) );
|
|
!!}
|
|
function getString(keypath: PAnsiChar; wantExceptions: bool32 = false): TIEVisionString; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.putInt32
|
|
|
|
<FM>Declaration<FC>
|
|
procedure putInt32(keypath: PAnsiChar; value: int32_t); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Puts an integer (32 bit) into this property tree, using the specified key path.
|
|
A key path is a list of words separated by periods (ie: "image.size.width").
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>keypath<FN></C> <C>Path of the key to put.</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Value to put.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
propertytree1.putInt32('image.size.width', 640);
|
|
!!}
|
|
procedure putInt32(keypath: PAnsiChar; value: int32_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.getInt32
|
|
|
|
<FM>Declaration<FC>
|
|
function getInt32(keypath: PAnsiChar): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Retrieves value of the specified key. The value must be an integer (32 bit).
|
|
A key path is a list of words separated by periods (ie: "image.size.width").
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>keypath<FN></C> <C>Path of the key to get.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
width := propertytree1.getInt32('image.size.width');
|
|
!!}
|
|
function getInt32(keypath: PAnsiChar; wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.putDouble
|
|
|
|
<FM>Declaration<FC>
|
|
procedure putDouble(keypath: PAnsiChar; value: double); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Puts a double (64 bit floating point) into this property tree, using the specified key path.
|
|
A key path is a list of words separated by periods (ie: "image.property.EXIF_FNumber").
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>keypath<FN></C> <C>Path of the key to put.</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Value to put.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
propertytree.putDouble('image.property.EXIF_FNumber', 2.8);
|
|
!!}
|
|
procedure putDouble(keypath: PAnsiChar; value: double; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.getDouble
|
|
|
|
<FM>Declaration<FC>
|
|
function getDouble(keypath: PAnsiChar): double; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Retrieves value of the specified key. The value must be a double (64 bit floating point).
|
|
A key path is a list of words separated by periods (ie: "image.property.EXIF.FNumber").
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>keypath<FN></C> <C>Path of the key to get.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
width := propertytree1.getDouble('image.property.EXIF.FNumber');
|
|
!!}
|
|
function getDouble(keypath: PAnsiChar; wantExceptions: bool32 = false): double; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.putRect
|
|
|
|
<FM>Declaration<FC>
|
|
procedure putRect(keypath: PAnsiChar; const rect: <A TIEVisionRect>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Puts a rectangle (<A TIEVisionRect>) into this property tree, using the specified key path.
|
|
A key path is a list of words separated by periods (ie: "image.ROI").
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>keypath<FN></C> <C>Path of the key to put.</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Value to put.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
propertytree.putRect('image.ROI', IEVisionRect(10, 10, 200, 200));
|
|
!!}
|
|
procedure putRect(keypath: PAnsiChar; const rect: TIEVisionRect; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionPropertyTree.getRect
|
|
|
|
<FM>Declaration<FC>
|
|
function getRect(keypath: PAnsiChar): <A TIEVisionRect>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Retrieves value of the specified key. The value must be a <A TIEVisionRect> interface.
|
|
A key path is a list of words separated by periods (ie: "image.ROI").
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>keypath<FN></C> <C>Path of the key to get.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
rect := propertytree1.getRect('image.ROI');
|
|
!!}
|
|
function getRect(keypath: PAnsiChar; wantExceptions: bool32 = false): TIEVisionRect; safecall;
|
|
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionImage
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionImage = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to create raster images or matrices.
|
|
It is possible to perform basic input/output operations and several image processing tasks.
|
|
It is possible also to interface TIEVisionImage to ImageEn <a TIEBitmap>, sharing the same content.
|
|
|
|
<FM>Example<FC>
|
|
// creates empty image
|
|
image := IEVisionLib.createImage();
|
|
|
|
// creates an image from "input.jpg", resize to 100x100 and save as "output.jpg"
|
|
image := IEVisionLib.createImage('input.jpg');
|
|
image.resize(100, 100); // default interpolation = linear
|
|
image.save('output.jpg');
|
|
|
|
// creates an image of 1000x1000x24 bit
|
|
image := IEVisionLib.createImage(1000, 1000, ievUINT8, 3);
|
|
|
|
// creates an image from ImageEn <A TImageEnView> (sharing the content)
|
|
ImageEnView1.IEBitmap.Origin := ieboTOPLEFT;
|
|
image := IEVisionLib.createImage(ImageEnView1.IEBitmap.Width, ImageEnView1.IEBitmap.Height,
|
|
ievUINT8, 3, ImageEnView1.IEBitmap.Rowlen,
|
|
ImageEnView1.IEBitmap.ScanLine[0]);
|
|
|
|
// Same as previous code
|
|
image := ImageEnView1.IEBitmap.GetIEVisionImage();
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.adaptiveThreshold></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.addWeighted></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.avg></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.avgSdv></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.blur></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.camShift></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.canny></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.cmp></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.convertScale></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.copy></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.copyFrom></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.countNonZero></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.create></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.createAlphaMask></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.DCT></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.determinant></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.DFT></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.dilate></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.dotProduct></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.eigenVV></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.equalizeHistogram></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.erode></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.fastNlMeansDenoisingColored></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.filter2D></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.findContours></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.flip></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.floodFill></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.getAlphaMask></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.getChannelFormat></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.getChannels></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.getColumn></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.getColumns></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.getDiagonal></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.getHeight></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.getMetadata></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.getRect></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.getRow></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.getRowLen></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.getRows></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.getScanline></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.getWidth></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.hasAlphaMask></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.houghLines></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.houghLinesP></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.inpaint></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.inRange></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.integral></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.invert></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.isAllWhite></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.isEmpty></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.LUT></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.makeBorder></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.max></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.merge></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.min></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.minMax></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.mulSpectrums></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.mulTransposed></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.norm></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.operatorASSIGN></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.opNot></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.perspectiveTransform></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.pixel_BGR8></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.pixel_float32></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.pixel_float64></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.pixel_RGB8></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.pixel_uint16></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.pixel_uint8></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.pyrDown></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.pyrUp></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.reduce></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.repeatImage></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.resize></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.save></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.scaleAdd></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.setIdentity></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.setValue></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.setZero></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.share></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.smooth></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.splitPlanes></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.swap></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.threshold></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImage.transpose></C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionLibrary.createImage>
|
|
!!}
|
|
TIEVisionImage = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.create
|
|
|
|
<FM>Declaration<FC>
|
|
procedure create(width: int32_t; height: int32_t; channelFormat: <A TIEVisionChannelFormat>; channels: int32_t); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Allocates (if necessary) an image with the specified parameters.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>width<FN></C> <C>Image width.</C> </R>
|
|
<R> <C><FC>height<FN></C> <C>Image height.</C> </R>
|
|
<R> <C><FC>channelFormat<FN></C> <C>Type of channels (8 bit, 8 bit unsigned, 16 bit, etc...).</C> </R>
|
|
<R> <C><FC>channels<FN></C> <C>Number of channels (1 = gray scale, 3 = color).</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// create empty image
|
|
image := IEVisionLib.createImage();
|
|
// allocate 1000x1000 RGB image
|
|
image.create(1000, 1000, ievUINT8, 3);
|
|
!!}
|
|
procedure create(width: int32_t; height: int32_t; channelFormat: TIEVisionChannelFormat; channels: int32_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.swap
|
|
|
|
<FM>Declaration<FC>
|
|
procedure swap(secondImage: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Swaps the content of specified image and this image.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>secondImage<FN></C> <C>The other image to swap.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// swap content of image1 and image2
|
|
image1.swap(image2);
|
|
!!}
|
|
procedure swap(secondImage: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.operatorASSIGN
|
|
|
|
<FM>Declaration<FC>
|
|
procedure operatorASSIGN(src: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Clones the source image replacing the old content.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Source image to clone.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionImage.share>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// copies the entire content of image1 to image2
|
|
image2.operatorASSIGN(image1);
|
|
!!}
|
|
procedure operatorASSIGN(src: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.share
|
|
|
|
<FM>Declaration<FC>
|
|
procedure share(src: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Shares the content of source image with this image, replacing the old content.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Image to share.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionImage.operatorASSIGN>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// sares the entire content of image1 with image2
|
|
image2.share(image1);
|
|
!!}
|
|
procedure share(src: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.getWidth
|
|
|
|
<FM>Declaration<FC>
|
|
function getWidth(): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns current image width.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionImage.getHeight>
|
|
|
|
!!}
|
|
function getWidth(wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.getHeight
|
|
|
|
<FM>Declaration<FC>
|
|
function getHeight(): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns current image height.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionImage.getWidth>
|
|
!!}
|
|
function getHeight(wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.getChannels
|
|
|
|
<FM>Declaration<FC>
|
|
function getChannels(): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the number of channels of current image.
|
|
When 1 the image is gray scale. When >=3 the image is colored image (ie RGB).
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionImage.getChannelFormat>
|
|
!!}
|
|
function getChannels(wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.getChannelFormat
|
|
|
|
<FM>Declaration<FC>
|
|
function getChannelFormat(): <A TIEVisionChannelFormat>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the type of channels.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionImage.getChannels>
|
|
!!}
|
|
function getChannelFormat(wantExceptions: bool32 = false): TIEVisionChannelFormat; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.getRowLen
|
|
|
|
<FM>Declaration<FC>
|
|
function getRowLen(): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the length, in bytes, of a single row.
|
|
!!}
|
|
function getRowLen(wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.isEmpty
|
|
|
|
<FM>Declaration<FC>
|
|
function isEmpty(): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if the object doesn't contain an image.
|
|
!!}
|
|
function isEmpty(wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.getScanline
|
|
|
|
<FM>Declaration<FC>
|
|
function getScanline(row: int32_t): pointer; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns a pointer to the specified row.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>row<FN></C> <C>Row index to retrieve.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getScanline(row: int32_t; wantExceptions: bool32 = false): pointer; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.pixel_uint8
|
|
|
|
<FM>Declaration<FC>
|
|
function pixel_uint8(row: int32_t; col: int32_t): uint8_p; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the pixel value at the specified position. Channel format must be 8 bit unsigned, single channel.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>row<FN></C> <C>Vertial position.</C> </R>
|
|
<R> <C><FC>col<FN></C> <C>Horizontal position.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// read value of pixel at 10, 10
|
|
value := image1.pixel_uint8(10, 10)^;
|
|
!!}
|
|
function pixel_uint8(row: int32_t; col: int32_t; wantExceptions: bool32 = false): uint8_p; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.pixel_uint16
|
|
|
|
<FM>Declaration<FC>
|
|
function pixel_uint16(row: int32_t; col: int32_t): uint16_p; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the pixel value at the specified position. Channel format must be 16 bit unsigned, single channel.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>row<FN></C> <C>Vertial position.</C> </R>
|
|
<R> <C><FC>col<FN></C> <C>Horizontal position.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// read value of pixel at 10, 10
|
|
value := image1.pixel_uint16(10, 10)^;
|
|
!!}
|
|
function pixel_uint16(row: int32_t; col: int32_t; wantExceptions: bool32 = false): uint16_p; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.pixel_float32
|
|
|
|
<FM>Declaration<FC>
|
|
function pixel_float32(row: int32_t; col: int32_t): float_p; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the pixel value at the specified position. Channel format must be 32 bit floating point, single channel.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>row<FN></C> <C>Vertial position.</C> </R>
|
|
<R> <C><FC>col<FN></C> <C>Horizontal position.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function pixel_float32(row: int32_t; col: int32_t; wantExceptions: bool32 = false): float_p; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.pixel_float64
|
|
|
|
<FM>Declaration<FC>
|
|
function pixel_float64(row: int32_t; col: int32_t): double_p; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the pixel value at the specified position. Channel format must be 64 bit floating point, single channel.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>row<FN></C> <C>Vertial position.</C> </R>
|
|
<R> <C><FC>col<FN></C> <C>Horizontal position.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function pixel_float64(row: int32_t; col: int32_t; wantExceptions: bool32 = false): double_p; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.pixel_RGB8
|
|
|
|
<FM>Declaration<FC>
|
|
function pixel_RGB8(row: int32_t; col: int32_t): <A PIEVisionRGB8>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the pixel value at the specified position. Channel format must be 8 bit unsigned, three channels (diposed as R-G-B).
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>row<FN></C> <C>Vertial position.</C> </R>
|
|
<R> <C><FC>col<FN></C> <C>Horizontal position.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function pixel_RGB8(row: int32_t; col: int32_t; wantExceptions: bool32 = false): PIEVisionRGB8; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.pixel_BGR8
|
|
|
|
<FM>Declaration<FC>
|
|
function pixel_BGR8(row: int32_t; col: int32_t): <A PIEVisionBGR8>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the pixel value at the specified position. Channel format must be 8 bit unsigned, three channels (diposed as B-G-R).
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>row<FN></C> <C>Vertial position.</C> </R>
|
|
<R> <C><FC>col<FN></C> <C>Horizontal position.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function pixel_BGR8(row: int32_t; col: int32_t; wantExceptions: bool32 = false): PIEVisionBGR8; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.getRect
|
|
|
|
<FM>Declaration<FC>
|
|
function getRect(rect: TIEVisionRect): <A TIEVisionImage>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a new TIEVisionImage object that contains the specified region. No copy is performed, only the actual area is shared among the objects.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>rect<FN></C> <C>Region to share.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
ROI_image := image1.getRect(IEVisionRect(10, 10, 200, 200));
|
|
!!}
|
|
function getRect(rect: TIEVisionRect; wantExceptions: bool32 = false): TIEVisionImage; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.getColumn
|
|
|
|
<FM>Declaration<FC>
|
|
function getColumn(col: int32_t): <A TIEVisionImage>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a new TIEVisionImage object that contains the specified column. No copy is performed, only the actual area is shared among the objects.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>col<FN></C> <C>Column to share.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
ROI_image := image1.getColumn(5);
|
|
!!}
|
|
function getColumn(col: int32_t; wantExceptions: bool32 = false): TIEVisionImage; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.getColumns
|
|
|
|
<FM>Declaration<FC>
|
|
function getColumns(startCol: int32_t; endCol: int32_t): <A TIEVisionImage>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a new TIEVisionImage object that contains the specified range of columns. No copy is performed, only the actual area is shared among the objects.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>startCol<FN></C> <C>First column to share.</C> </R>
|
|
<R> <C><FC>endCol<FN></C> <C>Last column (not included) to share.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
ROI_image := image1.getColumns(10, 100);
|
|
!!}
|
|
function getColumns(startCol: int32_t; endCol: int32_t; wantExceptions: bool32 = false): TIEVisionImage; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.getRow
|
|
|
|
<FM>Declaration<FC>
|
|
function getRow(row: int32_t): <A TIEVisionImage>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a new TIEVisionImage object that contains the specified single row. No copy is performed, only the actual area is shared among the objects.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>row<FN></C> <C>Row to share.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
ROI_image := image1.getRow(25);
|
|
!!}
|
|
function getRow(row: int32_t; wantExceptions: bool32 = false): TIEVisionImage; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.getRows
|
|
|
|
<FM>Declaration<FC>
|
|
function getRows(startRow: int32_t; endRow: int32_t): <A TIEVisionImage>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a new TIEVisionImage object that contains the specified range of rows. No copy is performed, only the actual area is shared among the objects.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>startRow<FN></C> <C>First row to share.</C> </R>
|
|
<R> <C><FC>endRow<FN></C> <C>Last row (not included) to share.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
ROI_image := image1.getRows(10, 100);
|
|
!!}
|
|
function getRows(startRow: int32_t; endRow: int32_t; wantExceptions: bool32): TIEVisionImage; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.getDiagonal
|
|
|
|
<FM>Declaration<FC>
|
|
function getDiagonal(diag: int32_t): <A TIEVisionImage>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a new TIEVisionImage object that contains the specified diagonal. No copy is performed, only the actual area is shared among the objects.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>diag<FN></C> <C>Index of the diagonal, with the following values: d=0 is the main diagonal, d>0 is a diagonal from the lower half. For example, d=1 means the diagonal is set imme- diately below the main one. d<0 is a diagonal from the upper half. For example, d=1 means the diagonal is set imme- diately above the main one.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getDiagonal(diag: int32_t; wantExceptions: bool32 = false): TIEVisionImage; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.getAlphaMask
|
|
|
|
<FM>Declaration<FC>
|
|
function getAlphaMask(): <A TIEVisionImage>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns current alpha mask.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionImage.createAlphaMask>
|
|
|
|
|
|
<FM>Example<FC>
|
|
image1.createAlphaMask();
|
|
alpha := image1.getAlphaMask();
|
|
!!}
|
|
function getAlphaMask(wantExceptions: bool32 = false): TIEVisionImage; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.createAlphaMask
|
|
|
|
<FM>Declaration<FC>
|
|
procedure createAlphaMask(); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates the alpha mask.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionImage.getAlphaMask>
|
|
!!}
|
|
procedure createAlphaMask(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.hasAlphaMask
|
|
|
|
<FM>Declaration<FC>
|
|
function hasAlphaMask(): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if the object doesn't contain an alpha mask.
|
|
!!}
|
|
function hasAlphaMask(wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.save
|
|
|
|
<FM>Declaration<FC>
|
|
procedure save(filename: PAnsiChar); overload; safecall;
|
|
procedure save(filename: PAnsiChar; fileType: <A TIEVisionFileFormat>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Saves current image to the specified file.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>filename<FN></C> <C>Filename of output file.</C> </R>
|
|
<R> <C><FC>fileType<FN></C> <C>File format of the file.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// save to output.jpg, as jpeg
|
|
image1.save('output.jpg');
|
|
|
|
// save to output.dat, as jpeg
|
|
image1.save('output.dat', ievJPEG);
|
|
!!}
|
|
procedure save(filename: PAnsiChar; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure save(filename: PAnsiChar; fileType: TIEVisionFileFormat; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.getMetadata
|
|
|
|
<FM>Declaration<FC>
|
|
function getMetadata(): <A TIEVisionPropertyTree>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns a property tree with all meta properties of the image.
|
|
!!}
|
|
function getMetadata(wantExceptions: bool32 = false): TIEVisionPropertyTree; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.resize
|
|
|
|
<FM>Declaration<FC>
|
|
function resize(dst: <A TIEVisionImage>; interpolation: <A TIEVisionInterpolation> = ievLINEAR): <A TIEVisionImage>; overload; safecall;
|
|
function resize(newWidth: int32_t; newHeight: int32_t; interpolation: <A TIEVisionInterpolation> = ievLINEAR): <A TIEVisionImage>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Resizes (resamples) current image to the specified size, using an interpolation filter.
|
|
First overload stores the resized image in the specified destination object. Uses destination size as resize parameters. Source image remains untouched. Returns the destination object.
|
|
Second overload resizes the image inplace, returning itself.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dst<FN></C> <C>Container for the resized image.</C> </R>
|
|
<R> <C><FC>interpolation<FN></C> <C>Interpolation filter.</C> </R>
|
|
<R> <C><FC>newWidth<FN></C> <C>New image width. If less than 0, this is autocalculated.</C> </R>
|
|
<R> <C><FC>newHeight<FN></C> <C>New image height. If less than 0, this is autocalculated.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// resizes image1 to 1000x1000, using CUBIC interpolation
|
|
image1.resize(1000, 1000, ievCUBIC);
|
|
|
|
// resizes image1 to the size of image2 (1000x1000)
|
|
image2.create(1000, 1000, ievUINT8, 3);
|
|
image1.resize(image2, ievCUBIC);
|
|
!!}
|
|
function resize(dst: TIEVisionImage; interpolation: TIEVisionInterpolation = ievLINEAR; wantExceptions: bool32 = false): TIEVisionImage; overload; safecall;
|
|
function resize(newWidth: int32_t; newHeight: int32_t; interpolation: TIEVisionInterpolation = ievLINEAR; wantExceptions: bool32 = false): TIEVisionImage; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.convertColor
|
|
|
|
<FM>Declaration<FC>
|
|
function convertColor(dst: TIEVisionImage; code: <A TIEVisionCvtColorCode>): <A TIEVisionImage>; overload; safecall;
|
|
function convertColor(code: <A TIEVisionCvtColorCode>): <A TIEVisionImage>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Converts from a color space to another color space.
|
|
First overload stores the resulting image into specified destination. Returns the destination object.
|
|
Second overload stores the resulting image inplace. Returns itself.
|
|
|
|
Channels format and channels count are set automatically.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dst<FN></C> <C>Container for the destination image.</C> </R>
|
|
<R> <C><FC>code<FN></C> <C>Specifies source and destination color space.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// Converts BGR image to gray scale
|
|
image.convertColor(ievBGR2GRAY);
|
|
!!}
|
|
function convertColor(dst: TIEVisionImage; code: TIEVisionCvtColorCode; wantExceptions: bool32 = false): TIEVisionImage; overload; safecall;
|
|
function convertColor(code: TIEVisionCvtColorCode; wantExceptions: bool32 = false): TIEVisionImage; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.flip
|
|
|
|
<FM>Declaration<FC>
|
|
function flip(dst: <A TIEVisionImage>; flipMode: <A TIEVisionFlipMode>): <A TIEVisionImage>; overload; safecall;
|
|
function flip(flipMode: <A TIEVisionFlipMode>): <A TIEVisionImage>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Flips current image.
|
|
First overload stores the resulting image into specified destination. Returns the destination object.
|
|
Second overload stores the resulting image inplace. Returns itself.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dst<FN></C> <C>Container for the destination image.</C> </R>
|
|
<R> <C><FC>flipMode<FN></C> <C>Specifies the axis (X, Y or XY).</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// horizontal flip
|
|
image1.flip(ievX_AXIS);
|
|
!!}
|
|
function flip(dst: TIEVisionImage; flipMode: TIEVisionFlipMode; wantExceptions: bool32 = false): TIEVisionImage; overload; safecall;
|
|
function flip(flipMode: TIEVisionFlipMode; wantExceptions: bool32 = false): TIEVisionImage; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.equalizeHistogram
|
|
|
|
<FM>Declaration<FC>
|
|
procedure equalizeHistogram(dst: <A TIEVisionImage>); overload; safecall;
|
|
procedure equalizeHistogram(); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Equalizes the histogram.
|
|
First overload places the result into destination object.
|
|
Second overload stores the resulting image inplace.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dst<FN></C> <C>Container for the destination image.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
image1.equalizeHistogram();
|
|
!!}
|
|
procedure equalizeHistogram(dst: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure equalizeHistogram(wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.makeBorder
|
|
|
|
<FM>Declaration<FC>
|
|
procedure makeBorder(dst: <A TIEVisionImage>; top, bottom, left, right: int32_t; borderType: <A TIEVisionBorderType>; value: <A TIEVisionScalar>); overload; safecall;
|
|
procedure makeBorder(top, bottom, left, right: int32_t; borderType: <A TIEVisionBorderType>; value: <A TIEVisionScalar>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Forms a border around the image.
|
|
First overload places the result into destination object.
|
|
Second overload stores the resulting image inplace.
|
|
|
|
Resulting image size will be width = old_width + left + right, height = old_height + top + bottom.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dst<FN></C> <C>Container for the destination image.</C> </R>
|
|
<R> <C><FC>top<FN></C> <C>Specifies how many pixels on the top to add.</C> </R>
|
|
<R> <C><FC>bottom<FN></C> <C>Specifies how many pixels on the bottom to add.</C> </R>
|
|
<R> <C><FC>left<FN></C> <C>Specifies how many pixels on the left to add.</C> </R>
|
|
<R> <C><FC>right<FN></C> <C>Specifies how many pixels on the right to add.</C> </R>
|
|
<R> <C><FC>borderType<FN></C> <C>Border type.</C> </R>
|
|
<R> <C><FC>value<FN></C> <C>Border value if borderType is ievBORDER_CONSTANT.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure makeBorder(dst: TIEVisionImage; top, bottom, left, right: int32_t; borderType: TIEVisionBorderType; value: TIEVisionScalar; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure makeBorder(top, bottom, left, right: int32_t; borderType: TIEVisionBorderType; value: TIEVisionScalar; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.smooth
|
|
|
|
<FM>Declaration<FC>
|
|
procedure smooth(dst: <A TIEVisionImage>; smoothType: <A TIEVisionSmoothType> = ievGAUSSIAN; param1: int32_t = 3; param2: int32_t = 0; param3: double = 0.0; param4: double = 0.0); overload; safecall;
|
|
procedure smooth(smoothType: <A TIEVisionSmoothType> = ievGAUSSIAN; param1: int32_t = 3; param2: int32_t = 0; param3: double = 0.0; param4: double = 0.0); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Smooths the image.
|
|
First overload places the result into destination object.
|
|
Second overload stores the resulting image inplace.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dst<FN></C> <C>Container for the destination image.</C> </R>
|
|
<R> <C><FC>smoothType<FN></C> <C>Type of the smoothing.</C> </R>
|
|
<R> <C><FC>param1<FN></C> <C>Parameter 1. Depends by smoothType.</C> </R>
|
|
<R> <C><FC>param2<FN></C> <C>Parameter 2. Depends by smoothType.</C> </R>
|
|
<R> <C><FC>param3<FN></C> <C>Parameter 3. Depends by smoothType.</C> </R>
|
|
<R> <C><FC>param4<FN></C> <C>Parameter 4. Depends by smoothType.</C> </R>
|
|
</TABLE>
|
|
|
|
<FC>smoothType<FN> can be:
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>ievBLUR_NO_SCALE<FN></C> <C>Linear convolution with param1 x param2 box kernel (all 1's). To smooth different pixels with different-size box kernels, you can use the integral image that is computed using <A TIEVisionImage.integral>.</C> </R>
|
|
<R> <C><FC>ievBLUR<FN></C> <C>Linear convolution with param1 x param2 box kernel (all 1's) with subsequent scaling by 1 / (param1 * param2).</C> </R>
|
|
<R> <C><FC>ievGAUSSIAN<FN></C> <C>Linear convolution with a param1 x param2 Gaussian kernel.</C> </R>
|
|
<R> <C><FC>ievMEDIAN<FN></C> <C>Median filter with a param1 x param1 square aperture.</C> </R>
|
|
<R> <C><FC>ievBILATERAL<FN></C> <C>Bilateral filter with a param1 x param1 square aperture, color sigma= param3 and spatial sigma= param4. If param1=0, the aperture square side is set to round(param4*1.5)*2+1.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure smooth(dst: TIEVisionImage; smoothType: TIEVisionSmoothType = ievGAUSSIAN; param1: int32_t = 3; param2: int32_t = 0; param3: double = 0.0; param4: double = 0.0; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure smooth(smoothType: TIEVisionSmoothType = ievGAUSSIAN; param1: int32_t = 3; param2: int32_t = 0; param3: double = 0.0; param4: double = 0.0; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.filter2D
|
|
|
|
<FM>Declaration<FC>
|
|
procedure filter2D(dst: <A TIEVisionImage>; kernel: <A TIEVisionImage>; anchor: <A TIEVisionPoint>); overload; safecall;
|
|
procedure filter2D(kernel: <A TIEVisionImage>; anchor: <A TIEVisionPoint>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Convolves an image with the kernel.
|
|
First overload places the result into destination object.
|
|
Second overload stores the resulting image inplace.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dst<FN></C> <C>Container for the destination image.</C> </R>
|
|
<R> <C><FC>kernel<FN></C> <C>Convolution kernel (or rather a correlation kernel), a single-channel floating point matrix. To apply different kernels to different channels, split the image into separate color planes using <A TIEVisionImage.splitPlanes> and process them individually.</C> </R>
|
|
<R> <C><FC>anchor<FN></C> <C>Anchor of the kernel that indicates the relative position of a filtered point within the kernel. The anchor should lie within the kernel. The special default value (-1, -1) means that the anchor is at the kernel center.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure filter2D(dst: TIEVisionImage; kernel: TIEVisionImage; anchor: TIEVisionPoint; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure filter2D(kernel: TIEVisionImage; anchor: TIEVisionPoint; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.integral
|
|
|
|
<FM>Declaration<FC>
|
|
procedure integral(sum: <A TIEVisionImage>); overload; safecall;
|
|
procedure integral(sum: <A TIEVisionImage>; sqsum: <A TIEVisionImage>; tilted_sum: <A TIEVisionImage>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates the integral of an image.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>sum<FN></C> <C>Integral image as (W + 1) x (H + 1) , 32-bit integer or floating-point (32f or 64f).</C> </R>
|
|
<R> <C><FC>sqsum<FN></C> <C>Integral image for squared pixel values. It is (W + 1) x (H + 1), double-precision floating-point (64f) image (matrix).</C> </R>
|
|
<R> <C><FC>tilted_sum<FN></C> <C>Integral for the image rotated by 45 degrees. It is (W + 1) x (H + 1) image (matrix) with the same data type as sum.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure integral(sum: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure integral(sum: TIEVisionImage; sqsum: TIEVisionImage; tilted_sum: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.pyrDown
|
|
|
|
<FM>Declaration<FC>
|
|
procedure pyrDown(dst: <A TIEVisionImage>); overload; safecall;
|
|
procedure pyrDown(); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Smoothes an image and downsamples it.
|
|
First overload places the result into destination object.
|
|
Second overload stores the resulting image inplace.
|
|
|
|
Size of the destination image is computed as new_width = (width+1)/2, new_height = (height+1)/2).
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dst<FN></C> <C>Container for the destination image.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure pyrDown(dst: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure pyrDown(wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.pyrUp
|
|
|
|
<FM>Declaration<FC>
|
|
procedure pyrUp(dst: <A TIEVisionImage>); overload; safecall;
|
|
procedure pyrUp(); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Upsamples an image and then smoothes it.
|
|
First overload places the result into destination object.
|
|
Second overload stores the resulting image inplace.
|
|
|
|
Size of the destination image is computed as new_width = width*2, new_height = height*2
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dst<FN></C> <C>Container for the destination image.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure pyrUp(dst: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure pyrUp(wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.splitPlanes
|
|
|
|
<FM>Declaration<FC>
|
|
procedure splitPlanes(plane0: <A TIEVisionImage>); overload; safecall;
|
|
procedure splitPlanes(plane0: <A TIEVisionImage>; plane1: <A TIEVisionImage>); overload; safecall;
|
|
procedure splitPlanes(plane0: <A TIEVisionImage>; plane1: <A TIEVisionImage>; plane2: <A TIEVisionImage>); overload; safecall;
|
|
procedure splitPlanes(plane0: <A TIEVisionImage>; plane1: <A TIEVisionImage>; plane2: <A TIEVisionImage>; plane3: <A TIEVisionImage>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Divides a multi-channel image (matrix) into several single-channel images.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>plane0<FN></C> <C>Container for plane 0.</C> </R>
|
|
<R> <C><FC>plane1<FN></C> <C>Container for plane 1.</C> </R>
|
|
<R> <C><FC>plane2<FN></C> <C>Container for plane 2.</C> </R>
|
|
<R> <C><FC>plane3<FN></C> <C>Container for plane 3.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
blue := IEVisionLib.createImage();
|
|
green := IEVisionLib.createImage();
|
|
red := IEVisionLib.createImage();
|
|
image1.splitPlanes(blue, green, red);
|
|
!!}
|
|
procedure splitPlanes(plane0: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure splitPlanes(plane0: TIEVisionImage; plane1: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure splitPlanes(plane0: TIEVisionImage; plane1: TIEVisionImage; plane2: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure splitPlanes(plane0: TIEVisionImage; plane1: TIEVisionImage; plane2: TIEVisionImage; plane3: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.minMax
|
|
|
|
<FM>Declaration<FC>
|
|
procedure minMax(out minVal: double; out maxVal: double); overload; safecall;
|
|
procedure minMax(out minVal: double; out maxVal: double; out minLoc: <A TIEVisionPoint>; out maxLoc: <A TIEVisionPoint>); overload; safecall;
|
|
procedure minMax(out minVal: double; out maxVal: double; out minLoc: <A TIEVisionPoint>; out maxLoc: <A TIEVisionPoint>; mask: <A TIEVisionImage>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Finds the global minimum and maximum in a whole image or sub-image.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>minVal<FN></C> <C>Output for minimum value.</C> </R>
|
|
<R> <C><FC>maxVal<FN></C> <C>Output for maximum value.</C> </R>
|
|
<R> <C><FC>minLoc<FN></C> <C>Minimum value location.</C> </R>
|
|
<R> <C><FC>maxLoc<FN></C> <C>Maximum value location.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure minMax(out minVal: double; out maxVal: double; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure minMax(out minVal: double; out maxVal: double; out minLoc: TIEVisionPoint; out maxLoc: TIEVisionPoint; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure minMax(out minVal: double; out maxVal: double; out minLoc: TIEVisionPoint; out maxLoc: TIEVisionPoint; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.camShift
|
|
|
|
<FM>Declaration<FC>
|
|
procedure camShift(var window: <A TIEVisionRect>; criteria: <A TIEVisionTermCriteria>; out area: double; out box: <A TIEVisionBox2D>); overload; safecall;
|
|
function camShift(var window: <A TIEVisionRect>; criteria: <A TIEVisionTermCriteria>): <A TIEVisionRotatedRect>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Finds an object center, size, and orientation.
|
|
First overload outputs area as double and bounding box as <A TIEVisionBox2D>.
|
|
Second overload returns a <A TIEVisionRotatedRect> record.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>window<FN></C> <C>Initial search window.</C> </R>
|
|
<R> <C><FC>criteria<FN></C> <C>Search stop criteria.</C> </R>
|
|
<R> <C><FC>area<FN></C> <C>Area of found box.</C> </R>
|
|
<R> <C><FC>box<FN></C> <C>Found box.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Demos<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\TrackObjects\TrackObjects.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\TrackObjects_LowLevel\TrackObjects_LowLevel.dpr </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure camShift(var window: TIEVisionRect; criteria: TIEVisionTermCriteria; out area: double; out box: TIEVisionBox2D; wantExceptions: bool32 = false); overload; safecall;
|
|
function camShift(var window: TIEVisionRect; criteria: TIEVisionTermCriteria; wantExceptions: bool32 = false): TIEVisionRotatedRect; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.inRange
|
|
|
|
<FM>Declaration<FC>
|
|
procedure inRange(lower: <A TIEVisionScalar>; upper: <A TIEVisionScalar>; dest: <A TIEVisionImage>); overload; safecall;
|
|
procedure inRange(lower: <A TIEVisionImage>; upper: <A TIEVisionImage>; dest: <A TIEVisionImage>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Checks if image pixels lie between the specified values.
|
|
First overload gets a range of two scalar values.
|
|
Second overload gets an matrix (image) of lower and upper values.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>lower<FN></C> <C>Lower value or matrix of values.</C> </R>
|
|
<R> <C><FC>upper<FN></C> <C>Upper value or matrix of value.</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container used to store results. Contains 255 if related pixel is inside the range.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure inRange(lower: TIEVisionScalar; upper: TIEVisionScalar; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure inRange(lower: TIEVisionImage; upper: TIEVisionImage; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.convertScale
|
|
|
|
<FM>Declaration<FC>
|
|
function convertScale(dest: <A TIEVisionImage>; scale: double = 1.0; shift: double = 0.0): <A TIEVisionImage>; overload; safecall;
|
|
function convertScale(channelFormat: <A TIEVisionChannelFormat>; scale: double = 1.0; shift: double = 0.0): <A TIEVisionImage>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Converts an image to another datatype with optional scaling.
|
|
First overload stores the resulting image into destination object. It returns the destination image.
|
|
Second overload stores the resulting image inplace. It returns itself.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container used to store results.</C> </R>
|
|
<R> <C><FC>scale<FN></C> <C>Scale factor (1.0 = no scale).</C> </R>
|
|
<R> <C><FC>shift<FN></C> <C>Delta added to the scaled values.</C> </R>
|
|
<R> <C><FC>channelFormat<FN></C> <C>Used to change the channel format.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function convertScale(dest: TIEVisionImage; scale: double = 1.0; shift: double = 0.0; wantExceptions: bool32 = false): TIEVisionImage; overload; safecall;
|
|
function convertScale(channelFormat: TIEVisionChannelFormat; scale: double = 1.0; shift: double = 0.0; wantExceptions: bool32 = false): TIEVisionImage; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.countNonZero
|
|
|
|
<FM>Declaration<FC>
|
|
function countNonZero(): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Counts non-zero image pixels.
|
|
!!}
|
|
function countNonZero(wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.isAllWhite
|
|
|
|
<FM>Declaration<FC>
|
|
function isAllWhite(): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if the image contains all whites (255 values).
|
|
!!}
|
|
function isAllWhite(wantExceptions: bool32): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.addWeighted
|
|
|
|
<FM>Declaration<FC>
|
|
procedure addWeighted(alpha: double; rhs: <A TIEVisionImage>; beta: double; gamma: double; dest: <A TIEVisionImage>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Computes the weighted sum of two images, executing: dest = this*alpha + rhs*beta + gamma
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>alpha<FN></C> <C>Weight for the first image pixels.</C> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>Second source image of the same size and channel number.</C> </R>
|
|
<R> <C><FC>beta<FN></C> <C>Weight for the second image pixels.</C> </R>
|
|
<R> <C><FC>gamma<FN></C> <C>Scalar added to each sum.</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure addWeighted(alpha: double; rhs: TIEVisionImage; beta: double; gamma: double; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.avg
|
|
|
|
<FM>Declaration<FC>
|
|
function avg(mask: <A TIEVisionImage>): <A TIEVisionScalar>; overload; safecall;
|
|
function avg(): <A TIEVisionScalar>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates an average (mean) of image pixels.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>mask<FN></C> <C>Operation mask (processes only pixels with mask > 0).</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function avg(mask: TIEVisionImage; wantExceptions: bool32 = false): TIEVisionScalar; overload; safecall;
|
|
function avg(wantExceptions: bool32 = false): TIEVisionScalar; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.avgSdv
|
|
|
|
<FM>Declaration<FC>
|
|
procedure avgSdv(out mean: <A TIEVisionScalar>; out stdDev: <A TIEVisionScalar>; mask: <A TIEVisionImage>); overload; safecall;
|
|
procedure avgSdv(out mean: <A TIEVisionScalar>; out stdDev: <A TIEVisionScalar>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates a mean and standard deviation of image pixels.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>mean<FN></C> <C>Outputs calculated mean.</C> </R>
|
|
<R> <C><FC>stdDev<FN></C> <C>Output calculated standard deviation.</C> </R>
|
|
<R> <C><FC>mask<FN></C> <C>Operation mask (processes only pixels with mask > 0).</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure avgSdv(out mean: TIEVisionScalar; out stdDev: TIEVisionScalar; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure avgSdv(out mean: TIEVisionScalar; out stdDev: TIEVisionScalar; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.cmp
|
|
|
|
<FM>Declaration<FC>
|
|
procedure cmp(rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>; cmpOp: <A TIEVisionCmpOp>); overload; safecall;
|
|
procedure cmp(rhs: double; dest: <A TIEVisionImage>; cmpOp: <A TIEVisionCmpOp>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Performs the per-element comparison of two images or an image and scalar value.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>Right-side image to compare.</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the results.</C> </R>
|
|
<R> <C><FC>cmpOp<FN></C> <C>Compare operation.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure cmp(rhs: TIEVisionImage; dest: TIEVisionImage; cmpOp: TIEVisionCmpOp; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure cmp(rhs: double; dest: TIEVisionImage; cmpOp: TIEVisionCmpOp; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.copy
|
|
|
|
<FM>Declaration<FC>
|
|
procedure copy(dest: <A TIEVisionImage>; mask: <A TIEVisionImage>); overload; safecall;
|
|
procedure copy(dest: <A TIEVisionImage>); overload; safecall;
|
|
procedure copy(const srcRect: <A TIEVisionRect>; dest: <A TIEVisionImage>); overload; safecall;
|
|
function copy(const srcRect: <A TIEVisionRect>): <A TIEVisionImage>; overload; safecall;
|
|
procedure copy(const srcRect: <A TIEVisionRect>; const dstRect: <A TIEVisionRect>; dest: <A TIEVisionImage>); overload; safecall;
|
|
procedure copy(const srcRect: <A TIEVisionRect>; destPtr: pointer; rowLen: int32_t); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Copies current image to the specified destination.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dest<FN></C> <C>XXX</C> </R>
|
|
<R> <C><FC>mask<FN></C> <C>XXX</C> </R>
|
|
<R> <C><FC>srcRect<FN></C> <C>XXX</C> </R>
|
|
<R> <C><FC>dstRect<FN></C> <C>XXX</C> </R>
|
|
<R> <C><FC>destPtr<FN></C> <C>XXX</C> </R>
|
|
<R> <C><FC>rowLen<FN></C> <C>XXX</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// overload nr.1: copies image1 to destination, using specified mask (only pixels with mask > 0)
|
|
destination := IEVisionLib.createImage();
|
|
image1.copy(destination, mask);
|
|
|
|
// overload nr.2: copies image1 to destination
|
|
destination := IEVisionLib.createImage();
|
|
image1.copy(destination);
|
|
|
|
// overload nr.3: copies specified rectangle of image1 to destination
|
|
destination := IEVisionLib.createImage();
|
|
image1.copy(IEVisionRect(10, 10, 200, 200), destination);
|
|
|
|
// overload nr.4: creates a new image from the specified rectangle
|
|
destination := image1.copy(IEVisionRect(10, 10, 200, 200));
|
|
|
|
// overload nr.5: copies specified rectangle of image1 to specified rectangle of destination
|
|
destination := IEVisionLib.createImage();
|
|
image1.copy(IEVisionRect(10, 10, 200, 200), IEVisionRect(50, 50, 200, 200), destination);
|
|
|
|
// overload nr.6: copies specified rectangle to destination buffer
|
|
image1.copy(IEVisionRect(10, 10, 200, 200), destPointer, destRowLen);
|
|
!!}
|
|
procedure copy(dest: TIEVisionImage; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure copy(dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure copy(const srcRect: TIEVisionRect; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
function copy(const srcRect: TIEVisionRect; wantExceptions: bool32 = false): TIEVisionImage; overload; safecall;
|
|
procedure copy(const srcRect: TIEVisionRect; const dstRect: TIEVisionRect; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure copy(const srcRect: TIEVisionRect; destPtr: pointer; rowLen: int32_t; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.copyFrom
|
|
|
|
<FM>Declaration<FC>
|
|
procedure copyFrom(srcChannelFormat: <A TIEVisionChannelFormat>; srcChannels: int32_t; srcRowLen: int32_t; srcData: pointer); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Copies image from memory buffer.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>srcChannelFormat<FN></C> <C>Source image channel format.</C> </R>
|
|
<R> <C><FC>srcChannels<FN></C> <C>Source image number of channels.</C> </R>
|
|
<R> <C><FC>srcRowLen<FN></C> <C>Source image row length.</C> </R>
|
|
<R> <C><FC>srcData<FN></C> <C>Source image buffer.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// copies RGB image from ImageEnView1 (TImageEnView)
|
|
image1 := IEVisionLib.createImage();
|
|
image1.copyFrom(ievUINT8, 3, ImageEnView1.IEBitmap.RowLen, ImageEnView1.IEBitmap.Scanline[ImageEnView1.IEBitmap.Height-1]);
|
|
image1.flip(ievY_AXIS);
|
|
!!}
|
|
procedure copyFrom(srcChannelFormat: TIEVisionChannelFormat; srcChannels: int32_t; srcRowLen: int32_t; srcData: pointer; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.setZero
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setZero(); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Sets all pixels to zero.
|
|
!!}
|
|
procedure setZero(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.DCT
|
|
|
|
<FM>Declaration<FC>
|
|
procedure DCT(dest: <A TIEVisionImage>; flags: <A TIEVisionDCTFlags>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Performs a forward or inverse discrete Cosine transform of the image.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image.</C> </R>
|
|
<R> <C><FC>flags<FN></C> <C>Transformation flags.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure DCT(dest: TIEVisionImage; flags: TIEVisionDCTFlags; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.DFT
|
|
|
|
<FM>Declaration<FC>
|
|
procedure DFT(dest: <A TIEVisionImage>; flags: <A TIEVisionDFTFlags>; nonZeroRows: int32_t = 0); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Performs a forward or inverse Discrete Fourier transform of a 1D or 2D floating-point image.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image.</C> </R>
|
|
<R> <C><FC>flags<FN></C> <C>Transformation flags.</C> </R>
|
|
<R> <C><FC>nonZeroRows<FN></C> <C>When the parameter is not zero, the function assumes that only the first nonzeroRows rows of the input image (ievDFT_INVERSE is not set) or only the first nonzeroRows of the output image (ievDFT_INVERSE is set) contain non-zeros.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure DFT(dest: TIEVisionImage; flags: TIEVisionDFTFlags; nonZeroRows: int32_t = 0; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.determinant
|
|
|
|
<FM>Declaration<FC>
|
|
function determinant(): double; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the determinant of a square floating-point image (matrix).
|
|
!!}
|
|
function determinant(wantExceptions: bool32 = false): double; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.dotProduct
|
|
|
|
<FM>Declaration<FC>
|
|
function dotProduct(rhs: <A TIEVisionImage>): double; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates the dot product in Euclidian metrics.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>Right-hand side image.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function dotProduct(rhs: TIEVisionImage; wantExceptions: bool32 = false): double; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.eigenVV
|
|
|
|
<FM>Declaration<FC>
|
|
procedure eigenVV(evects: <A TIEVisionImage>; evals: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Computes eigenvalues and eigenvectors of a symmetric image (matrix).
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>evects<FN></C> <C>Output container for the eigen vectors.</C> </R>
|
|
<R> <C><FC>evals<FN></C> <C>Output container for the eigen values.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure eigenVV(evects: TIEVisionImage; evals: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.invert
|
|
|
|
<FM>Declaration<FC>
|
|
function invert(dest: <A TIEVisionImage>; invertMethod: <A TIEVisionInvertMethod>): double; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Finds the inverse or pseudo-inverse of an image (matrix).
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image.</C> </R>
|
|
<R> <C><FC>invertMethod<FN></C> <C>Inversion method.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function invert(dest: TIEVisionImage; invertMethod: TIEVisionInvertMethod; wantExceptions: bool32 = false): double; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.LUT
|
|
|
|
<FM>Declaration<FC>
|
|
procedure LUT(dest: <A TIEVisionImage>; lut: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Performs a look-up table transform of an image. Source must be an image of 8-bit pixels.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image.</C> </R>
|
|
<R> <C><FC>lut<FN></C> <C>Look-up table of 256 elements. In case of multi-channel source image, the table should either have a single channel (in this case the same table is used for all channels) or the same number of channels as in the source image.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure LUT(dest: TIEVisionImage; lut: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.max
|
|
|
|
<FM>Declaration<FC>
|
|
procedure max(source1: <A TIEVisionImage>; source2: <A TIEVisionImage>); overload; safecall;
|
|
procedure max(source1: <A TIEVisionImage>; source2: double); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates per-element maximum of two image or an image and a scalar.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>source1<FN></C> <C>First source image.</C> </R>
|
|
<R> <C><FC>source2<FN></C> <C>Second source image or scalar value.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure max(source1: TIEVisionImage; source2: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure max(source1: TIEVisionImage; source2: double; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.merge
|
|
|
|
<FM>Declaration<FC>
|
|
procedure merge(channel1: <A TIEVisionImage>; channel2: <A TIEVisionImage>; channel3: <A TIEVisionImage>); overload; safecall;
|
|
procedure merge(channel1: <A TIEVisionImage>; channel2: <A TIEVisionImage>; channel3: <A TIEVisionImage>; channel4: <A TIEVisionImage>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Merges specified channels and places the result in this object.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>channel1<FN></C> <C>Channel 1.</C> </R>
|
|
<R> <C><FC>channel2<FN></C> <C>Channel 2.</C> </R>
|
|
<R> <C><FC>channel3<FN></C> <C>Channel 3.</C> </R>
|
|
<R> <C><FC>channel4<FN></C> <C>Channel 4.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
image1.merge(channel_Blue, channel_Green, channel_Red);
|
|
!!}
|
|
procedure merge(channel1: TIEVisionImage; channel2: TIEVisionImage; channel3: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure merge(channel1: TIEVisionImage; channel2: TIEVisionImage; channel3: TIEVisionImage; channel4: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.min
|
|
|
|
<FM>Declaration<FC>
|
|
procedure min(source1: <A TIEVisionImage>; source2: <A TIEVisionImage>); overload; safecall;
|
|
procedure min(source1: <A TIEVisionImage>; source2: double); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates per-element minimum of two image or an image and a scalar.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>source1<FN></C> <C>First source image.</C> </R>
|
|
<R> <C><FC>source2<FN></C> <C>Second source image or scalar value.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure min(source1: TIEVisionImage; source2: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure min(source1: TIEVisionImage; source2: double; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.mulSpectrums
|
|
|
|
<FM>Declaration<FC>
|
|
procedure mulSpectrums(rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>; flags: <A TIEVisionMulSpectrumsFlags>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Performs the per-element multiplication of two Fourier spectrums.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>Right-hand side image.</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image.</C> </R>
|
|
<R> <C><FC>flags<FN></C> <C>Operation flags.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure mulSpectrums(rhs: TIEVisionImage; dest: TIEVisionImage; flags: TIEVisionMulSpectrumsFlags; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.mulTransposed
|
|
|
|
<FM>Declaration<FC>
|
|
procedure mulTransposed(dest: <A TIEVisionImage>; order: bool32; delta: <A TIEVisionImage>; scale: double = 1.0); overload; safecall;
|
|
procedure mulTransposed(dest: <A TIEVisionImage>; order: bool32; scale: double = 1.0); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates the product of an image (matrix) and its transposition.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image.</C> </R>
|
|
<R> <C><FC>order<FN></C> <C>If true performs: st = scale(src - delta)T (src - delta), otherwise performs: dst = scale(src - delta)(src - delta)T</C> </R>
|
|
<R> <C><FC>delta<FN></C> <C>Optional delta matrix subtracted from src before the multiplication.</C> </R>
|
|
<R> <C><FC>scale<FN></C> <C>Optional scale factor for the matrix product.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure mulTransposed(dest: TIEVisionImage; order: bool32; delta: TIEVisionImage; scale: double = 1.0; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure mulTransposed(dest: TIEVisionImage; order: bool32; scale: double = 1.0; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.norm
|
|
|
|
<FM>Declaration<FC>
|
|
function norm(): double; overload; safecall;
|
|
function norm(mask: <A TIEVisionImage>): double; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates an absolute image norm, an absolute difference norm, or a relative difference norm.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>mask<FN></C> <C>Operation mask.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function norm(wantExceptions: bool32 = false): double; overload; safecall;
|
|
function norm(mask: TIEVisionImage; wantExceptions: bool32 = false): double; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.opNot
|
|
|
|
<FM>Declaration<FC>
|
|
procedure opNot(dest: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Inverts every bit of an image.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure opNot(dest: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.perspectiveTransform
|
|
|
|
<FM>Declaration<FC>
|
|
procedure perspectiveTransform(dest: <A TIEVisionImage>; matrix: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Performs the perspective image (matrix) transformation of vectors.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image.</C> </R>
|
|
<R> <C><FC>matrix<FN></C> <C>3x3 or 4x4 floating-point transformation matrix.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure perspectiveTransform(dest: TIEVisionImage; matrix: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.reduce
|
|
|
|
<FM>Declaration<FC>
|
|
procedure reduce(dest: <A TIEVisionImage>; dim: int32_t = -1; op: <A TIEVisionReduceOp> = ievREDUCE_SUM); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Reduces an image (matrix) to a vector.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image.</C> </R>
|
|
<R> <C><FC>dim<FN></C> <C>Dimension index along which the matrix is reduced. 0 means that the matrix is reduced to a single row. 1 means that the matrix is reduced to a single column.</C> </R>
|
|
<R> <C><FC>op<FN></C> <C>Reduction operation.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure reduce(dest: TIEVisionImage; dim: int32_t = -1; op: TIEVisionReduceOp = ievREDUCE_SUM; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.repeatImage
|
|
|
|
<FM>Declaration<FC>
|
|
procedure repeatImage(ny, nx: int32_t; dest: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Fills the destination image with repeated copies of the source image.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>ny<FN></C> <C>Flag to specify how many times the source is repeated along the vertical axis.</C> </R>
|
|
<R> <C><FC>nx<FN></C> <C>Flag to specify how many times the source is repeated along the horizontal axis.</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for resuling image.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure repeatImage(ny, nx: int32_t; dest: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.scaleAdd
|
|
|
|
<FM>Declaration<FC>
|
|
procedure scaleAdd(scale: double; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates the sum of a scaled image and another image.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>scale<FN></C> <C>Scale factor for left-hand side image (this).</C> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>Right-hand side image.</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for resulting image.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure scaleAdd(scale: double; rhs: TIEVisionImage; dest: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.setValue
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setValue(value: <A TIEVisionScalar>; mask: <A TIEVisionImage>); overload; safecall;
|
|
procedure setValue(value: <A TIEVisionScalar>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Sets all or some of the image pixels to the specified value.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Scalar value to set.</C> </R>
|
|
<R> <C><FC>mask<FN></C> <C>Operation mask (set only when > 0).</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// fills with BGR = (200, 100, 0)
|
|
image1.setValue(IEVisionScalar(200, 100, 0));
|
|
!!}
|
|
procedure setValue(value: TIEVisionScalar; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure setValue(value: TIEVisionScalar; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.setIdentity
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setIdentity(); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Initializes a scaled identity image (matrix).
|
|
!!}
|
|
procedure setIdentity(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.transpose
|
|
|
|
<FM>Declaration<FC>
|
|
procedure transpose(); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Transposes an image (matrix).
|
|
!!}
|
|
procedure transpose(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.findContours
|
|
|
|
<FM>Declaration<FC>
|
|
function findContours(mode: <A TIEVisionContourRetrMode>; method: <A TIEVisionContourApproxMethod>; offset: <A TIEVisionPoint>): <A TIEVisionVectorObjRef>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Finds contours.
|
|
Image must be ievUINT8, 1 channel. Result will be a vector of vector of points (TIEVisionVectorObjRef will contain TIEVision VectorPoint objects).
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>mode<FN></C> <C>Contour retrieval mode.</C> </R>
|
|
<R> <C><FC>method<FN></C> <C>Contour approximation method.</C> </R>
|
|
<R> <C><FC>offset<FN></C> <C>Optional offset by which every contour point is shifted.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function findContours(mode: TIEVisionContourRetrMode; method: TIEVisionContourApproxMethod; offset: TIEVisionPoint; wantExceptions: bool32 = false): TIEVisionVectorObjRef; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.inpaint
|
|
|
|
<FM>Declaration<FC>
|
|
procedure inpaint(mask: <A TIEVisionImage>; range: double; method: <A TIEVisionInpaintMethod> = ievINPAINT_NS); overload; safecall;
|
|
procedure inpaint(brushWidth: int32_t; brushHeight: int32_t; const subimageRect: <A TIEVisionRect>; range: double; method: <A TIEVisionInpaintMethod> = ievINPAINT_NS); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Restores the selected region in an image using the region neighborhood.
|
|
First overload needs a mask to identify the area to be inpainted.
|
|
Second overload builds automatically the mask using specified brush size.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>mask<FN></C> <C>Inpainting mask, 8-bit 1-channel image. Non-zero pixels indicate the area that needs to be inpainted.</C> </R>
|
|
<R> <C><FC>range<FN></C> <C>Radius of a circlular neighborhood of each point inpainted that is considered by the algorithm.</C> </R>
|
|
<R> <C><FC>method<FN></C> <C> Inpainting method</C> </R>
|
|
<R> <C><FC>brushWidth<FN></C> <C>Width of area to inpaint.</C> </R>
|
|
<R> <C><FC>brushHeight<FN></C> <C>Height of area to inpaint.</C> </R>
|
|
<R> <C><FC>subimageRect<FN></C> <C>Rectangle of area of interest (which includes the area to inpaint).</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Demo<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\Inpaint_Brush\Inpaint_Brush.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\Inpaint_Selection\Inpaint_Selection.dpr </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure inpaint(mask: TIEVisionImage; range: double; method: TIEVisionInpaintMethod = ievINPAINT_NS; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure inpaint(brushWidth: int32_t; brushHeight: int32_t; const subimageRect: TIEVisionRect; range: double; method: TIEVisionInpaintMethod = ievINPAINT_NS; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.floodFill
|
|
|
|
<FM>Declaration<FC>
|
|
procedure floodFill(outMask: TIEVisionImage; startingPoint: TIEVisionPoint; loDiff: TIEVisionScalar; upDiff: TIEVisionScalar; connectivity: int32_t = 4; fixedRange: bool32 = false; wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Fills specified mask with a connected pixels. Connected pixels will have 255 value in the mask, 0 otherwise.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> outMask <FN></C> <C> Output gray scale mask. </C> </R>
|
|
<R> <C><FC> startingPoint <FN></C> <C> Starting pixel of source image. </C> </R>
|
|
<R> <C><FC> loDiff <FN></C> <C> Maximal lower brightness/color difference. </C> </R>
|
|
<R> <C><FC> upDiff <FN></C> <C> Maximal upper brightness/color difference. </C> </R>
|
|
<R> <C><FC> connectivity <FN></C> <C> Determines which neighbors of a pixel are considered. </C> </R>
|
|
<R> <C><FC> fixedRange <FN></C> <C> If True only the difference between the current pixel and starting pixel is considered. </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
// makes transparent all connected pixels starting from x = 10, y = 10
|
|
var mask: TIEVisionImage;
|
|
ImageEnView1.LegacyBitmap := false;
|
|
ImageEnView1.IO.LoadFromFile('test.jpg');
|
|
mask := IEVisionLib.createImage();
|
|
ImageEnView1.IEBitmap.GetIEVisionImage().floodFill(mask, IEVisionPoint(10, 10), IEVisionScalar(4, 4, 4), IEVisionScalar(4, 4, 4));
|
|
mask.opNot(mask);
|
|
ImageEnView1.IEBitmap.AlphaChannel.AssignIEVisionImage(mask);
|
|
imageEnview1.Update();
|
|
!!}
|
|
procedure floodFill(outMask: TIEVisionImage; startingPoint: TIEVisionPoint; loDiff: TIEVisionScalar; upDiff: TIEVisionScalar; connectivity: int32_t = 4; fixedRange: bool32 = false; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.canny
|
|
|
|
<FM>Declaration<FC>
|
|
procedure canny(threshold1: double; threshold2: double; apertureSize: int32_t = 3; L2gradient: bool32 = false; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure canny(outImage: TIEVisionImage; threshold1: double; threshold2: double; apertureSize: int32_t = 3; L2gradient: bool32 = false; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Finds edges in an image using the Canny algorithm.
|
|
|
|
Note: Pixel format of input image must be ie8g.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> outImage <FN></C> <C> Destination image. Must be 8 bit gray scale (ie8g) and must have the same size of input image. </C> </R>
|
|
<R> <C><FC> threshold1 <FN></C> <C> First threshold for the hysteresis procedure. </C> </R>
|
|
<R> <C><FC> threshold2 <FN></C> <C> Second threshold for the hysteresis procedure. </C> </R>
|
|
<R> <C><FC> apertureSize <FN></C> <C> Aperture size for the Sobel operator. </C> </R>
|
|
<R> <C><FC> L2gradient <FN></C> <C> A flag, indicating whether a more accurate L2 normalization should be used to calculate the image gradient magnitude. </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
ImageEnView.LegacyBitmap := false;
|
|
ImageEnView.IO.LoadFromFile('input.jpg');
|
|
ImageEnView.IEBitmap.PixelFormat := ie8g;
|
|
ImageEnView.IEBitmap.GetIEVisionImage().canny(50, 200, 3);
|
|
ImageEnView.Update();
|
|
!!}
|
|
procedure canny(threshold1: double; threshold2: double; apertureSize: int32_t = 3; L2gradient: bool32 = false; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure canny(outImage: TIEVisionImage; threshold1: double; threshold2: double; apertureSize: int32_t = 3; L2gradient: bool32 = false; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.blur
|
|
|
|
<FM>Declaration<FC>
|
|
procedure blur(ksize: <A TIEVisionSize>; anchor: <A TIEVisionPoint>; borderType: <A TIEVisionBorderType> = ievBORDER_REFLECT_101; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure blur(outImage: <A TIEVisionImage>; ksize: <A TIEVisionSize>; anchor: <A TIEVisionPoint>; borderType: <A TIEVisionBorderType> = ievBORDER_REFLECT_101; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Blurs an image using the normalized box filter.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> outImage <FN></C> <C> Destination image. Must be 8 bit gray scale (ie8g) and must have the same size of input image. </C> </R>
|
|
<R> <C><FC> ksize <FN></C> <C> Blurring kernel size. </C> </R>
|
|
<R> <C><FC> anchor <FN></C> <C> Anchor point. Value IEVisionPoint(-1, -1) means that the anchor is at the kernel center. </C> </R>
|
|
<R> <C><FC> borderType <FN></C> <C> border mode used to extrapolate pixels outside of the image. </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
ImageEnView.LegacyBitmap := false;
|
|
ImageEnView.IO.LoadFromFile('input.jpg');
|
|
ImageEnView.IEBitmap.GetIEVisionImage().blur(IEVisionSize(6, 6), IEVisionPoint(-1, -1));
|
|
ImageEnView.Update();
|
|
!!}
|
|
procedure blur(ksize: TIEVisionSize; anchor: TIEVisionPoint; borderType: TIEVisionBorderType = ievBORDER_REFLECT_101; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure blur(outImage: TIEVisionImage; ksize: TIEVisionSize; anchor: TIEVisionPoint; borderType: TIEVisionBorderType = ievBORDER_REFLECT_101; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.houghLines
|
|
|
|
<FM>Declaration<FC>
|
|
function houghLines(rho: double; theta: double; threshold: int32_t; srn: double = 0; stn: double = 0; wantExceptions: bool32 = false): <A TIEVisionVectorFloatPair>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Finds lines in a binary image using the standard Hough transform.
|
|
Returns a vector of lines. Each line is represented by a two-element vector, the distance from the coordinate origin and the distance from the coordinate origin).
|
|
|
|
Note: Pixel format of input image must be ie8g.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> rho <FN></C> <C> Distance resolution of the accumulator in pixels. </C> </R>
|
|
<R> <C><FC> theta <FN></C> <C> Angle resolution of the accumulator in radians. </C> </R>
|
|
<R> <C><FC> threshold <FN></C> <C> Accumulator threshold parameter. Only those lines are returned that get enough votes. </C> </R>
|
|
<R> <C><FC> srn <FN></C> <C> For the multi-scale Hough transform, it is a divisor for the distance resolution rho. </C> </R>
|
|
<R> <C><FC> stn <FN></C> <C> For the multi-scale Hough transform, it is a divisor for the distance resolution theta. </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Demo<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\LinesDetect\LinesDetect.dpr </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
ImageEnView.LegacyBitmap := false;
|
|
ImageEnView.IO.LoadFromFile('input.jpg');
|
|
ImageEnView.IEBitmap.PixelFormat := ie8g;
|
|
ImageEnView.IEBitmap.GetIEVisionImage().blur(IEVisionSize(3, 3), IEVisionPoint(-1, -1));
|
|
ImageEnView.IEBitmap.GetIEVisionImage().canny(50, 200, 3);
|
|
lines := ImageEnView.IEBitmap.GetIEVisionImage().houghLines(1, PI / 180, 200);
|
|
!!}
|
|
function houghLines(rho: double; theta: double; threshold: int32_t; srn: double = 0; stn: double = 0; wantExceptions: bool32 = false): TIEVisionVectorFloatPair; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.houghLinesP
|
|
|
|
<FM>Declaration<FC>
|
|
function houghLinesP(rho: double; theta: double; threshold: int32_t; minLineLength: double = 0; maxLineGap: double = 0; wantExceptions: bool32 = false): <A TIEVisionVectorScalarInt32>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Finds line segments in a binary image using the probabilistic Hough transform.
|
|
Returns a vector of line segments. Each line is represented by a 4-element vector (x1, y1, x2, y2), where (x1, y1) and (x2, y2) are the ending points of each detected line segment.
|
|
|
|
Note: Pixel format of input image must be ie8g.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> rho <FN></C> <C> Distance resolution of the accumulator in pixels. </C> </R>
|
|
<R> <C><FC> theta <FN></C> <C> Angle resolution of the accumulator in radians. </C> </R>
|
|
<R> <C><FC> threshold <FN></C> <C> Accumulator threshold parameter. Only those lines are returned that get enough votes. </C> </R>
|
|
<R> <C><FC> minLineLength <FN></C> <C> Minimum line length. Line segments shorter than that are rejected. </C> </R>
|
|
<R> <C><FC> maxLineGap <FN></C> <C> Maximum allowed gap between points on the same line to link them. </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
var
|
|
lines: TIEVisionVectorScalarInt32;
|
|
i: integer;
|
|
begin
|
|
ImageEnView.LegacyBitmap := false;
|
|
ImageEnView.IO.LoadFromFile('input.jpg');
|
|
ImageEnView.IEBitmap.PixelFormat := ie8g;
|
|
ImageEnView.IEBitmap.GetIEVisionImage().blur(IEVisionSize(3, 3), IEVisionPoint(-1, -1));
|
|
ImageEnView.IEBitmap.GetIEVisionImage().canny(50, 200, 3);
|
|
lines := ImageEnView.IEBitmap.GetIEVisionImage().houghLinesP(1, PI / 180, 200, 100, 10);
|
|
// draw results
|
|
ImageEnView.IEBitmap.PixelFormat := ie24RGB;
|
|
ImageEnView.IEBitmap.Origin := ieboBOTTOMLEFT;
|
|
for i := 0 to lines.size() - 1 do
|
|
begin
|
|
with lines.getScalarInt32(i) do
|
|
begin
|
|
with ImageEnView.IEBitmap.Canvas do
|
|
begin
|
|
Pen.Color := clRed;
|
|
MoveTo(val[0], val[1]);
|
|
LineTo(val[2], val[3]);
|
|
end;
|
|
end;
|
|
end;
|
|
ImageEnView.Update();
|
|
end;
|
|
!!}
|
|
function houghLinesP(rho: double; theta: double; threshold: int32_t; minLineLength: double; maxLineGap: double; wantExceptions: bool32 = false): TIEVisionVectorScalarInt32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.fastNlMeansDenoisingColored
|
|
|
|
<FM>Declaration<FC>
|
|
procedure fastNlMeansDenoisingColored(h: single = 3; hColor: single = 3; templateWindowSize: int32_t = 7; searchWindowSize: int32_t = 21; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure fastNlMeansDenoisingColored(outImage: <A TIEVisionImage>; h: single = 3; hColor: single = 3; templateWindowSize: int32_t = 7; searchWindowSize: int32_t = 21; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Perform image denoising using Non-local Means Denoising algorithm with several computational optimizations. Noise is expected to be a gaussian white noise.
|
|
|
|
Note: Pixel format of input image must be ie24RGB.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> outImage <FN></C> <C> ie24RGB image for output </C> </R>
|
|
<R> <C><FC> h <FN></C> <C> Filter strength for image luminance. Larger <FC>h<FN> values perfectly remove noise but also remove image details, smaller <FC>h<FN> values preserve details but also noise </C> </R>
|
|
<R> <C><FC> hColor <FN></C> <C> The same as <FC>h<FN> but for image color. For most images a value of 10 will be enough to remove colored noise and not distort colors </C> </R>
|
|
<R> <C><FC> templateWindowSize <FN></C> <C> Size in pixels of the template patch that is used to compute weights. Should be odd. Recommended value 7 </C> </R>
|
|
<R> <C><FC> searchWindowSize <FN></C> <C> Size in pixels of the window that is used to compute weighted average for a given pixel. Should be odd. This value affects performance linearly, i.e. a larger value for <FC>searchWindowsSize<FN> will mean a longer denoising time. Recommended value 21 </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Demo<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\Denoising\Denoising.dpr </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
begin
|
|
ImageEnView.LegacyBitmap := false;
|
|
ImageEnView.IO.LoadFromFile('input.jpg');
|
|
ImageEnView.IEBitmap.GetIEVisionImage().fastNlMeansDenoisingColored( 10, 10 );
|
|
ImageEnView.Update();
|
|
end;
|
|
!!}
|
|
procedure fastNlMeansDenoisingColored(h: single = 3; hColor: single = 3; templateWindowSize: int32_t = 7; searchWindowSize: int32_t = 21; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure fastNlMeansDenoisingColored(outImage: TIEVisionImage; h: single = 3; hColor: single = 3; templateWindowSize: int32_t = 7; searchWindowSize: int32_t = 21; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.threshold
|
|
|
|
<FM>Declaration<FC>
|
|
procedure threshold(thresh: double; maxval: double; threshType: <A TIEVisionThresholdType>; wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Applies a fixed-level threshold to each pixel element.
|
|
|
|
Note: Pixel format of input image must be ie8g.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> thresh <FN></C> <C> Threshold value. </C> </R>
|
|
<R> <C><FC> maxval <FN></C> <C> Maximum value to use with the THRESH_BINARY and THRESH_BINARY_INV thresholding types. </C> </R>
|
|
<R> <C><FC> threshType <FN></C> <C> Thresholding type. </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
begin
|
|
ImageEnView.LegacyBitmap := false;
|
|
ImageEnView.IO.LoadFromFile('input.jpg');
|
|
ImageEnView.IEBitmap.PixelFormat := ie8g;
|
|
ImageEnView.IEBitmap.GetIEVisionImage().threshold(0, 255, ievTHRESH_BINARY or ievTHRESH_OTSU);
|
|
ImageEnView.Update();
|
|
end;
|
|
!!}
|
|
procedure threshold(thresh: double; maxval: double; threshType: TIEVisionThresholdType; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.adaptiveThreshold
|
|
|
|
<FM>Declaration<FC>
|
|
procedure adaptiveThreshold(maxValue: double; adaptiveMethod: <A TIEVisionAdaptiveMethod> = ievADAPTIVE_THRESH_MEAN_C; thresholdType: <A TIEVisionThresholdType> = ievTHRESH_BINARY; blockSize: int32_t = 3; C: double = 5; wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Applies an adaptive threshold.
|
|
|
|
Note: Pixel format of input image must be ie8g.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> maxValue <FN></C> <C> Non-zero value assigned to the pixels for which the condition is satisfied. </C> </R>
|
|
<R> <C><FC> adaptiveMethod <FN></C> <C> Adaptive thresholding algorithm to use. </C> </R>
|
|
<R> <C><FC> thresholdType <FN></C> <C> Thresholding type. </C> </R>
|
|
<R> <C><FC> blockSize <FN></C> <C> Size of a pixel neighborhood that is used to calculate a threshold value for the pixel: 3, 5, 7, and so on. </C> </R>
|
|
<R> <C><FC> C <FN></C> <C> Constant subtracted from the mean or weighted mean. </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
begin
|
|
ImageEnView.LegacyBitmap := false;
|
|
ImageEnView.IO.LoadFromFile('input.jpg');
|
|
ImageEnView.IEBitmap.PixelFormat := ie8g;
|
|
ImageEnView.IEBitmap.GetIEVisionImage().adaptiveThreshold(255);
|
|
ImageEnView.Update();
|
|
end;
|
|
!!}
|
|
procedure adaptiveThreshold(maxValue: double; adaptiveMethod: TIEVisionAdaptiveMethod = ievADAPTIVE_THRESH_MEAN_C; thresholdType: TIEVisionThresholdType = ievTHRESH_BINARY; blockSize: int32_t = 3; C: double = 5; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.erode
|
|
|
|
<FM>Declaration<FC>
|
|
procedure erode(erosionType: <A TIEVisionStructuringElementShape>; erosionSize: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Erosion is a method of Morphological Image Processing:
|
|
<L https://en.wikipedia.org/wiki/Erosion_%28morphology%29>https://en.wikipedia.org/wiki/Erosion_%28morphology%29</L>
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> erosionType <FN></C> <C> Structuring element shape. </C> </R>
|
|
<R> <C><FC> erosionSize <FN></C> <C> Size of structuring element. </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure erode(erosionType: TIEVisionStructuringElementShape; erosionSize: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImage.dilate
|
|
|
|
<FM>Declaration<FC>
|
|
procedure dilate(dilationType: <A TIEVisionStructuringElementShape>; dilationSize: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Dilation is a method of Morphological Image Processing:
|
|
<L https://en.wikipedia.org/wiki/Dilation_%28morphology%29>https://en.wikipedia.org/wiki/Dilation_%28morphology%29</L>
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> dilationType <FN></C> <C> Structuring element shape. </C> </R>
|
|
<R> <C><FC> dilationSize <FN></C> <C> Size of structuring element. </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure dilate(dilationType: TIEVisionStructuringElementShape; dilationSize: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionHistogram
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionHistogram = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to handle an histogram.
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionHistogram.calc></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionHistogram.calcBackProject></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionHistogram.clear></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionHistogram.getValue></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionHistogram.minMax></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionHistogram.normalize></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionHistogram.operatorASSIGN></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionHistogram.size></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionHistogram.swap></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionHistogram = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionHistogram.getValue
|
|
|
|
<FM>Declaration<FC>
|
|
function getValue(index0: int32_t): single; overload; safecall;
|
|
function getValue(index0: int32_t; index1: int32_t): single; overload; safecall;
|
|
function getValue(index0: int32_t; index1: int32_t; index2: int32_t): single; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns an item of the histogram.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>index0<FN></C> <C>Index of dimension 0.</C> </R>
|
|
<R> <C><FC>index1<FN></C> <C>Index of dimension 1.</C> </R>
|
|
<R> <C><FC>index2<FN></C> <C>Index of dimension 2.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getValue(index0: int32_t; wantExceptions: bool32 = false): single; overload; safecall;
|
|
function getValue(index0: int32_t; index1: int32_t; wantExceptions: bool32 = false): single; overload; safecall;
|
|
function getValue(index0: int32_t; index1: int32_t; index2: int32_t; wantExceptions: bool32 = false): single; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionHistogram.size
|
|
|
|
<FM>Declaration<FC>
|
|
function size(index: int32_t): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the size of specified dimension.
|
|
!!}
|
|
function size(index: int32_t; wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionHistogram.clear
|
|
|
|
<FM>Declaration<FC>
|
|
procedure clear(); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Clears the histogram.
|
|
!!}
|
|
procedure clear(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionHistogram.swap
|
|
|
|
<FM>Declaration<FC>
|
|
procedure swap(secondHist: <A TIEVisionHistogram>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Exchanges the content of two histograms.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>secondHist<FN></C> <C>Other object to exchange.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure swap(secondHist: TIEVisionHistogram; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionHistogram.operatorASSIGN
|
|
|
|
<FM>Declaration<FC>
|
|
procedure operatorASSIGN(src: <A TIEVisionHistogram>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Replaces current content with the content of specified object.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Object to assign to.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure operatorASSIGN(src: TIEVisionHistogram; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionHistogram.normalize
|
|
|
|
<FM>Declaration<FC>
|
|
procedure normalize(factor: double); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Normalizes the histogram.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>factor<FN></C> <C>Normalization factor.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure normalize(factor: double; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionHistogram.calc
|
|
|
|
<FM>Declaration<FC>
|
|
procedure calc(image: <A TIEVisionImage>; accumulate: bool32 = false); overload; safecall;
|
|
procedure calc(image: <A TIEVisionImage>; accumulate: bool32; mask: <A TIEVisionImage>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Populates histogram with the content of the specified image.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Source image.</C> </R>
|
|
<R> <C><FC>accumulate<FN></C> <C>If it is set, the histogram is not cleared in the beginning when it is allocated.</C> </R>
|
|
<R> <C><FC>mask<FN></C> <C>Operational mask.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure calc(image: TIEVisionImage; accumulate: bool32 = false; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure calc(image: TIEVisionImage; accumulate: bool32; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionHistogram.calcBackProject
|
|
|
|
<FM>Declaration<FC>
|
|
procedure calcBackProject(image: <A TIEVisionImage>; backProject: TIEVisionImage); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates the back projection of a histogram.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Source image.</C> </R>
|
|
<R> <C><FC>backProject<FN></C> <C>Destination image.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure calcBackProject(image: TIEVisionImage; backProject: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionHistogram.minMax
|
|
|
|
<FM>Declaration<FC>
|
|
procedure minMax(out vmin: single; out vmax: single); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns minimum and maximum histogram values.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>vmin<FN></C> <C>Minimum value.</C> </R>
|
|
<R> <C><FC>vmax<FN></C> <C>Maximum value.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure minMax(out vmin: single; out vmax: single; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionCascadeClassifier
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionCascadeClassifier = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to handle a cascade classifier.
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionCascadeClassifier.detectObjects></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionCascadeClassifier.empty></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionCascadeClassifier.load></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionCascadeClassifier = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionCascadeClassifier.load
|
|
|
|
<FM>Declaration<FC>
|
|
procedure load(stream: <A TIEVisionStream>); overload; safecall;
|
|
procedure load(filename: PAnsiChar); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Loads a cascade classifier from file or stream.
|
|
It is possible also to load an internal detector using the following consts:
|
|
<TABLE>
|
|
<R> <H>Const</H> <H>Classifier</H> </R>
|
|
<R> <C><FC>IEVC_EYE <FN></C> <C>":EYE"</C>
|
|
<R> <C><FC>IEVC_EYE_TREE_EYE_GLASSES<FN></C> <C>":EYETREEEYEGLASSES"</C>
|
|
<R> <C><FC>IEVC_FRONTAL_FACE_ALT <FN></C> <C>":FRONTALFACEALT"</C>
|
|
<R> <C><FC>IEVC_FRONTAL_FACE_ALT_2 <FN></C> <C>":FRONTALFACEALT2"</C>
|
|
<R> <C><FC>IEVC_FRONTAL_FACE_ALT_TREE <FN></C> <C>":FRONTALFACEALTTREE"</C>
|
|
<R> <C><FC>IEVC_FRONTAL_FACE_DEFAULT<FN></C> <C>":FRONTALFACEDEFAULT"</C>
|
|
<R> <C><FC>IEVC_FULL_BODY <FN></C> <C>":FULLBODY"</C>
|
|
<R> <C><FC>IEVC_LOWER_BODY<FN></C> <C>":LOWERBODY"</C>
|
|
<R> <C><FC>IEVC_PROFILE_FACE <FN></C> <C>":PROFILEFACE"</C>
|
|
<R> <C><FC>IEVC_UPPER_BODY<FN></C> <C>":UPPERBODY"</C>
|
|
<R> <C><FC>IEVC_LEFT_EYE_2_SPLITS <FN></C> <C>":LEFTEYE2SPLITS"</C>
|
|
<R> <C><FC>IEVC_RIGHT_EYE_2_SPLITS <FN></C> <C>":RIGHTEYE2SPLITS"</C>
|
|
<R> <C><FC>IEVC_LBP_FRONTAL_FACE <FN></C> <C>":LBPFRONTALFACE"</C>
|
|
<R> <C><FC>IEVC_CASCADE_SMILE <FN></C> <C>":CASCADESMILE"</C>
|
|
<R> <C><FC>IEVC_FRONTAL_CAT_FACE <FN></C> <C>":FRONTALCATFACE"</C>
|
|
<R> <C><FC>IEVC_FRONTAL_CAT_FACE_EXT <FN></C> <C>":FRONTALCATFACEEXTENDED"</C>
|
|
<R> <C><FC>IEVC_LICENSE_PLATE_RUS <FN></C> <C>":LICENSEPLATERUS"</C>
|
|
<R> <C><FC>IEVC_RUSSIAN_PLATE_NUMBER <FN></C> <C>":RUSSIANPLATENUMBER"</C>
|
|
</R>
|
|
</TABLE>
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>stream<FN></C> <C>Input stream.</C> </R>
|
|
<R> <C><FC>filename<FN></C> <C>Input filename or internal detector string.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Demos<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\FaceDetection\FaceDetection.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\FaceDetection_LowLevel\FaceDetection_LowLevel.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\GetFaces\GetFaces.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\TrackObjects\TrackObjects.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\TrackObjects_LowLevel\TrackObjects_LowLevel.dpr </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure load(stream: TIEVisionStream; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure load(filename: PAnsiChar; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionCascadeClassifier.detectObjects
|
|
|
|
<FM>Declaration<FC>
|
|
function detectObjects(image: <A TIEVisionImage>; scaleFactor: double; minNeighbors: int32_t; flags: <A TIEVisionHaarDetectObjectsFlags>; minSize: <A TIEVisionSize>; maxSize: <A TIEVisionSize>): <A TIEVisionVectorRect>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Detects objects of different sizes in the input image. The detected objects are returned as a list of rectangles.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Image where to find the objects.</C> </R>
|
|
<R> <C><FC>scaleFactor<FN></C> <C>Parameter specifying how much the image size is reduced at each image scale.</C> </R>
|
|
<R> <C><FC>minNeighbors<FN></C> <C>Parameter specifying how many neighbors each candiate rectangle should have to retain it.</C> </R>
|
|
<R> <C><FC>flags<FN></C> <C>Detection flags.</C> </R>
|
|
<R> <C><FC>minSize<FN></C> <C>Minimum possible object size. Objects smaller than that are ignored.</C> </R>
|
|
<R> <C><FC>maxSize<FN></C> <C>Maximum possible object size. Objects larger than that are ignored.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Demos<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\FaceDetection\FaceDetection.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\FaceDetection_LowLevel\FaceDetection_LowLevel.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\GetFaces\GetFaces.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\TrackObjects\TrackObjects.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\TrackObjects_LowLevel\TrackObjects_LowLevel.dpr </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function detectObjects(image: TIEVisionImage; scaleFactor: double;
|
|
minNeighbors: int32_t; flags: TIEVisionHaarDetectObjectsFlags;
|
|
minSize: TIEVisionSize; maxSize: TIEVisionSize; wantExceptions: bool32 = false): TIEVisionVectorRect; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionCascadeClassifier.empty
|
|
|
|
<FM>Declaration<FC>
|
|
function empty(): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if the cascade classifier is empty (it isn't loaded).
|
|
!!}
|
|
function empty(wantExceptions: bool32 = false): bool32; safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionImageList
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionImageList = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to handle a list of images.
|
|
This is a base interface that is inherited by <A TIEVisionMemoryImageList>, <A TIEVisionMemorySharedImageList> and <A TIEVisionTempFileImageList>.
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImageList.clear></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImageList.getImage></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImageList.insert></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImageList.pushBack></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImageList.remove></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImageList.setImage></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionImageList.size></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionImageList = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionImageList.insert
|
|
|
|
<FM>Declaration<FC>
|
|
function insert(position: int32_t; image: <A TIEVisionImage>): int32_t; overload; safecall;
|
|
function insert(position: int32_t; filename: PAnsiChar): int32_t; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Inserts an image into the specified index.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>position<FN></C> <C>Destination index.</C> </R>
|
|
<R> <C><FC>image<FN></C> <C>Image to insert.</C> </R>
|
|
<R> <C><FC>filename<FN></C> <C>Filename of the image to load and insert.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function insert(position: int32_t; image: TIEVisionImage; wantExceptions: bool32 = false): int32_t; overload; safecall;
|
|
function insert(position: int32_t; filename: PAnsiChar; wantExceptions: bool32 = false): int32_t; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImageList.remove
|
|
|
|
<FM>Declaration<FC>
|
|
procedure remove(position: int32_t); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Removes the image at specified index.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>position<FN></C> <C>Index of image to remove.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure remove(position: int32_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImageList.clear
|
|
|
|
<FM>Declaration<FC>
|
|
procedure clear(); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Removes all images in the list.
|
|
!!}
|
|
procedure clear(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImageList.getImage
|
|
|
|
<FM>Declaration<FC>
|
|
function getImage(position: int32_t): <A TIEVisionImage>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the image at specified index.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>position<FN></C> <C>Index of image to retrieve.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getImage(position: int32_t; wantExceptions: bool32 = false): TIEVisionImage; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImageList.size
|
|
|
|
<FM>Declaration<FC>
|
|
function size(): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns number of images in the list.
|
|
!!}
|
|
function size(wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImageList.setImage
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setImage(position: int32_t; image: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Replaces image at the index with the specified one.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>position<FN></C> <C>Index of image to replace.</C> </R>
|
|
<R> <C><FC>image<FN></C> <C>Image to set.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure setImage(position: int32_t; image: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionImageList.pushBack
|
|
|
|
<FM>Declaration<FC>
|
|
function pushBack(image: <A TIEVisionImage>): int32_t; overload; safecall;
|
|
function pushBack(filename: PAnsiChar): int32_t; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends the specified image to the end of list.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Image to set.</C> </R>
|
|
<R> <C><FC>filename<FN></C> <C>Filename of the image to set.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function pushBack(image: TIEVisionImage; wantExceptions: bool32 = false): int32_t; overload; safecall;
|
|
function pushBack(filename: PAnsiChar; wantExceptions: bool32 = false): int32_t; overload; safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionMemoryImageList
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionMemoryImageList = interface(<A TIEVisionImageList>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to handle a list of images stored in memory.
|
|
!!}
|
|
TIEVisionMemoryImageList = interface(TIEVisionImageList)
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionMemorySharedImageList
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionMemorySharedImageList = interface(<A TIEVisionImageList>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to handle a list of images stored in memory as shared object (the content is shared with the source images).
|
|
!!}
|
|
TIEVisionMemorySharedImageList = interface(TIEVisionImageList)
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionTempFileImageList
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionTempFileImageList = interface(<A TIEVisionImageList>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to handle a list of images stored on disk and removed when the object is destroyed.
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionTempFileImageList.getFilename></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionTempFileImageList.insertExistingFile></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionTempFileImageList.pushBackExistingFile></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionTempFileImageList = interface(TIEVisionImageList)
|
|
|
|
{!!
|
|
<FS>TIEVisionTempFileImageList.insertExistingFile
|
|
|
|
<FM>Declaration<FC>
|
|
function insertExistingFile(position: int32_t; filename: PAnsiChar; deleteOnDestroy: bool32 = true): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Inserts an existing file to the list.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>position<FN></C> <C>Inserting position.</C> </R>
|
|
<R> <C><FC>filename<FN></C> <C>Filename of existing file.</C> </R>
|
|
<R> <C><FC>deleteOnDestroy<FN></C> <C>Flag to delete the file on destroy.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function insertExistingFile(position: int32_t; filename: PAnsiChar; deleteOnDestroy: bool32 = true; wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionTempFileImageList.pushBackExistingFile
|
|
|
|
<FM>Declaration<FC>
|
|
function pushBackExistingFile(filename: PAnsiChar; deleteOnDestroy: bool32 = true): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Appends an existing file to the list.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>Filename of existing file.<FN></C> <C>XXX</C> </R>
|
|
<R> <C><FC>deleteOnDestroy<FN></C> <C>Flag to delete the file on destroy.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function pushBackExistingFile(filename: PAnsiChar; deleteOnDestroy: bool32 = true; wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionTempFileImageList.getFilename
|
|
|
|
<FM>Declaration<FC>
|
|
function getFilename(position: int32_t): PAnsiChar; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the filename assigned to the specified image index.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>position<FN></C> <C>Index of the image filename to retrieve.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getFilename(position: int32_t; wantExceptions: bool32 = false): PAnsiChar; safecall;
|
|
end;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionHaarTraining
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionHaarTraining = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to create training samples and learn an Haar cascade classifier to recognize new objects.
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionHaarTraining.createCascadeClassifier></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionHaarTraining.createTrainingSamples></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionHaarTraining.trainCascadeClassifier></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionHaarTraining = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionHaarTraining.createTrainingSamples
|
|
|
|
<FM>Declaration<FC>
|
|
procedure createTrainingSamples(dstSamplesFilename: PAnsiChar; sampleImage: <A TIEVisionImage>; backgroundImageList: <A TIEVisionImageList>; samplesCount: int32_t; bgColor: int32_t; bgThreshold: int32_t = 80; invert: <A TIEVisionHaarInvert> = ievNOINVERT; maxIntensityDeviation: int32_t = 40; maxXAngle: double = 1.1; maxYAngle: double = 1.1; maxZAngle: double = 0.5; width: int32_t = 24; height: int32_t = 24); overload; safecall;
|
|
procedure createTrainingSamples(dstSamplesFilename: PAnsiChar; srcImageList: <A TIEVisionImageList>; width: int32_t = 24; height: int32_t = 24); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a file with a set of training sample images.
|
|
|
|
First overload gets a single positive image and a list of backgrounds (negative samples) and mixes them to build the training samples file.
|
|
|
|
Second overload gets a list of images specifying a set of positive rectangles for each image and builds the training samples file.
|
|
Each image in srcImageList must contain bounding box of the objects to train, under the "HaarTraining.Objects" tree. The path is, for example:
|
|
"HaarTraining.Objects.Marisa" contains a Rect object.
|
|
"HaarTraining.Objects.Bill" contains a Rect object.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dstSamplesFilename<FN></C> <C>The resulting training samples file.</C> </R>
|
|
<R> <C><FC>sampleImage<FN></C> <C>A single positive image.</C> </R>
|
|
<R> <C><FC>backgroundImageList<FN></C> <C>A set of negative images.</C> </R>
|
|
<R> <C><FC>samplesCount<FN></C> <C>Number of samples to generate.</C> </R>
|
|
<R> <C><FC>bgColor<FN></C> <C>Background color.</C> </R>
|
|
<R> <C><FC>bgThreshold<FN></C> <C>Background threshold.</C> </R>
|
|
<R> <C><FC>invert<FN></C> <C>Randomly invert images.</C> </R>
|
|
<R> <C><FC>maxIntensityDeviation<FN></C> <C>Maximum intensity deviation.</C> </R>
|
|
<R> <C><FC>maxXAngle<FN></C> <C>Random rotation maximum X angle.</C> </R>
|
|
<R> <C><FC>maxYAngle<FN></C> <C>Random rotation maximum Y angle.</C> </R>
|
|
<R> <C><FC>maxZAngle<FN></C> <C>Random rotation maximum Z angle.</C> </R>
|
|
<R> <C><FC>width<FN></C> <C>Sample width.</C> </R>
|
|
<R> <C><FC>height<FN></C> <C>Sample height.</C> </R>
|
|
<R> <C><FC>srcImageList<FN></C> <C>A set of images containing rectangles with positive samples.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionHaarTraining.trainCascadeClassifier>
|
|
!!}
|
|
procedure createTrainingSamples(dstSamplesFilename: PAnsiChar; sampleImage: TIEVisionImage;
|
|
backgroundImageList: TIEVisionImageList; samplesCount: int32_t; bgColor: int32_t; bgThreshold: int32_t = 80; invert: TIEVisionHaarInvert = ievNOINVERT;
|
|
maxIntensityDeviation: int32_t = 40; maxXAngle: double = 1.1; maxYAngle: double = 1.1; maxZAngle: double = 0.5;
|
|
width: int32_t = 24; height: int32_t = 24; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure createTrainingSamples(dstSamplesFilename: PAnsiChar; srcImageList: TIEVisionImageList; width: int32_t = 24; height: int32_t = 24; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionHaarTraining.trainCascadeClassifier
|
|
|
|
<FM>Declaration<FC>
|
|
procedure trainCascadeClassifier(dstFilename: PAnsiChar; srcSamplesFilename: PAnsiChar; backgroundImageList: <A TIEVisionImageList>; treeCascade: bool32 = true; stagesCount: int32_t = 14; numPrecalculated: int32_t = 200; splitsCount: int32_t = 1; minHitRate: double = 0.995; maxFalseAlarm: double = 0.5; weightFraction: double = 0.95; haarMode: <A TIEVisionHaarMode> = ievBASIC; verticalSymmetry: bool32 = false; equalWeights: bool32 = true; width: int32_t = 24; height: int32_t = 24; boostType: <A TIEVisionHaarBoostType> = ievGENTLE_ADABOOST; stumpError: <A TIEVisionHaarStumpError> = ievMISCLASSIFICATION_ERROR; maxTreeSplits: int32_t = 0; minPos: int32_t = 500); safecall;
|
|
|
|
|
|
<FM>Description<FN>
|
|
Trains an Haar cascade classifier with the specified training samples file (generated with <A TIEVisionHaarTraining.createTrainingSamples>) and saves the classifier to file.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>dstFilename<FN></C> <C>Filename to store trained Haar Classifier.</C> </R>
|
|
<R> <C><FC>srcSamplesFilename<FN></C> <C>Training samples file.</C> </R>
|
|
<R> <C><FC>backgroundImageList<FN></C> <C>A set of negative samples.</C> </R>
|
|
<R> <C><FC>treeCascade<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>stagesCount<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>numPrecalculated<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>splitsCount<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>minHitRate<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>maxFalseAlarm<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>weightFraction<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>haarMode<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>verticalSymmetry<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>equalWeights<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>width<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>height<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>boostType<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>stumpError<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>maxTreeSplits<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>minPos<FN></C> <C>Undocumented.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure trainCascadeClassifier(dstFilename: PAnsiChar; srcSamplesFilename: PAnsiChar; backgroundImageList: TIEVisionImageList;
|
|
treeCascade: bool32 = true; stagesCount: int32_t = 14; numPrecalculated: int32_t = 200;
|
|
splitsCount: int32_t = 1; minHitRate: double = 0.995; maxFalseAlarm: double = 0.5; weightFraction: double = 0.95;
|
|
haarMode: TIEVisionHaarMode = ievBASIC; verticalSymmetry: bool32 = false; equalWeights: bool32 = true;
|
|
width: int32_t = 24; height: int32_t = 24; boostType: TIEVisionHaarBoostType = ievGENTLE_ADABOOST;
|
|
stumpError: TIEVisionHaarStumpError = ievMISCLASSIFICATION_ERROR;
|
|
maxTreeSplits: int32_t = 0; minPos: int32_t = 500; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionHaarTraining.createCascadeClassifier
|
|
|
|
<FM>Declaration<FC>
|
|
function createCascadeClassifier(sampleImage: <A TIEVisionImage>; backgroundImageList: <A TIEVisionImageList>; samplesCount: int32_t; treeCascade: bool32 = true; bgColor: int32_t = 0; bgThreshold: int32_t = 80; invert: <A TIEVisionHaarInvert> = ievNOINVERT; maxIntensityDeviation: int32_t = 40; maxXAngle: double = 1.1; maxYAngle: double = 1.1; maxZAngle: double = 0.5; width: int32_t = 24; height: int32_t = 24; stagesCount: int32_t = 14; numPrecalculated: int32_t = 200; splitsCount: int32_t = 1; minHitRate: double = 0.995; maxFalseAlarm: double = 0.5; weightFraction: double = 0.95; haarMode: <A TIEVisionHaarMode> = ievBASIC; verticalSymmetry: bool32 = false; equalWeights: bool32 = true; boostType: <A TIEVisionHaarBoostType> = ievGENTLE_ADABOOST; stumpError: <A TIEVisionHaarStumpError> = ievMISCLASSIFICATION_ERROR; maxTreeSplits: int32_t = 0; minPos: int32_t = 500): <A TIEVisionCascadeClassifier>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Trains an Haar cascade classifier with the specified sample (positive) image and background samples (negative) and returns a Cascade classifier object ready to reconize the trained object.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>sampleImage<FN></C> <C>One positive sample image.</C> </R>
|
|
<R> <C><FC>backgroundImageList<FN></C> <C>A list of negative sample images.</C> </R>
|
|
<R> <C><FC>samplesCount<FN></C> <C>Number of samples to generate.</C> </R>
|
|
<R> <C><FC>treeCascade<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>bgColor<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>bgThreshold<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>invert<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>maxIntensityDeviation<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>maxXAngle<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>maxYAngle<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>maxZAngle<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>width<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>height<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>stagesCount<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>numPrecalculated<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>splitsCount<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>minHitRate<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>maxFalseAlarm<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>weightFraction<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>haarMode<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>verticalSymmetry<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>equalWeights<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>boostType<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>stumpError<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>maxTreeSplits<FN></C> <C>Undocumented.</C> </R>
|
|
<R> <C><FC>minPos<FN></C> <C>Undocumented.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createCascadeClassifier(sampleImage: TIEVisionImage; backgroundImageList: TIEVisionImageList;
|
|
samplesCount: int32_t; treeCascade: bool32 = true; bgColor: int32_t = 0; bgThreshold: int32_t = 80;
|
|
invert: TIEVisionHaarInvert = ievNOINVERT;
|
|
maxIntensityDeviation: int32_t = 40; maxXAngle: double = 1.1; maxYAngle: double = 1.1;
|
|
maxZAngle: double = 0.5; width: int32_t = 24; height: int32_t = 24; stagesCount: int32_t = 14;
|
|
numPrecalculated: int32_t = 200; splitsCount: int32_t = 1; minHitRate: double = 0.995;
|
|
maxFalseAlarm: double = 0.5; weightFraction: double = 0.95; haarMode: TIEVisionHaarMode = ievBASIC;
|
|
verticalSymmetry: bool32 = false; equalWeights: bool32 = true;
|
|
boostType: TIEVisionHaarBoostType = ievGENTLE_ADABOOST;
|
|
stumpError: TIEVisionHaarStumpError = ievMISCLASSIFICATION_ERROR;
|
|
maxTreeSplits: int32_t = 0; minPos: int32_t = 500; wantExceptions: bool32 = false): TIEVisionCascadeClassifier; safecall;
|
|
end;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionInputOutput
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionInputOutput = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface contains a set of helper input/output functions.
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionInputOutput.zcompress></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionInputOutput.zdecompress></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionInputOutput = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionInputOutput.zcompress
|
|
|
|
<FM>Declaration<FC>
|
|
procedure zcompress(inputStream: <A TIEVisionStream>; outputStream: <A TIEVisionStream>; compressionLevel: int32_t = -1); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Compresses an input stream to output stream using zlib.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>inputStream<FN></C> <C>Input stream to compress.</C> </R>
|
|
<R> <C><FC>outputStream<FN></C> <C>Output stream (compressed).</C> </R>
|
|
<R> <C><FC>compressionLevel<FN></C> <C>Optional compression level. See below:</C> </R>
|
|
</TABLE>
|
|
|
|
Compression levels:
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>-1<FN></C> <C>Default compression.</C> </R>
|
|
<R> <C><FC>0<FN></C> <C>No compression.</C> </R>
|
|
<R> <C><FC>1<FN></C> <C>Best speed.</C> </R>
|
|
<R> <C><FC>2..8<FN></C> <C>Compromises between speed and compression.</C> </R>
|
|
<R> <C><FC>9<FN></C> <C>Best compression.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionInputOutput.zdecompress>
|
|
!!}
|
|
procedure zcompress(inputStream: TIEVisionStream; outputStream: TIEVisionStream; compressionLevel: int32_t = -1; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionInputOutput.zdecompress
|
|
|
|
<FM>Declaration<FC>
|
|
procedure zdecompress(inputStream: <A TIEVisionStream>; outputStream: <A TIEVisionStream>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Decompresses a zlib stream.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>inputStream<FN></C> <C>Input stream to decompress.</C> </R>
|
|
<R> <C><FC>outputStream<FN></C> <C>Resulting decompressed stream.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionInputOutput.zdecompress>
|
|
!!}
|
|
procedure zdecompress(inputStream: TIEVisionStream; outputStream: TIEVisionStream; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionOptimizerFunction
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionOptimizerFunction = function(userData: pointer; variables: <A TIEVisionVectorDouble>): double; stdcall;
|
|
|
|
<FM>Description<FN>
|
|
Callback used in <A TIEVisionMath.optimizeWith_NelderMeadSimplexMethod> optimization function.
|
|
The optimization algorithm will try to minimize this function.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>userData<FN></C> <C>User data (maybe a pointer to an application object).</C> </R>
|
|
<R> <C><FC>variables<FN></C> <C>Variables of the function to minimize.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionMath.optimizeWith_NelderMeadSimplexMethod>
|
|
|
|
<FM>Demo<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\TrackObjects_LowLevel\TrackObjects_LowLevel.dpr </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionOptimizerFunction = function(userData: pointer; variables: TIEVisionVectorDouble): double; stdcall; // must be stdcall
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionMath
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionMath = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface contains a set of mathematical and logical operations with images and matrices.
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.absDiff></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.add></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.boundingRect></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.calcCovarMatrix></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.cartToPolar></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.contourArea></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.exp></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.genericMultiply></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.log></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.mahalonobisDistance></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.mul></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.opAnd></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.opDiv></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.opOr></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.optimizeWith_NelderMeadSimplexMethod></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.opXor></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.pow></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.rectContains></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.rectIntersect></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.rectTestIntersect></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.rectUnion></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.solve></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.solveCubic></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.sub></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.trace></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.transform></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionMath.transpose></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionMath = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.optimizeWith_NelderMeadSimplexMethod
|
|
|
|
<FM>Declaration<FC>
|
|
function optimizeWith_NelderMeadSimplexMethod(func: <A TIEVisionOptimizerFunction>; funcUserData: pointer; solutions: <A TIEVisionVectorDouble>; out optimalValue: double; length: double = 1.0; timeout: int32_t = 1000; eps: double = 1.0e-20): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Optimizes (minimizes) the specified function using Nelder Mead Simplex method.
|
|
Returns true on success.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>func<FN></C> <C>Function to optimize (minimize).</C> </R>
|
|
<R> <C><FC>funcUserData<FN></C> <C>A user pointer sent to function to optimize.</C> </R>
|
|
<R> <C><FC>solutions<FN></C> <C>Initial veriables and output minimizing variables.</C> </R>
|
|
<R> <C><FC>optimalValue<FN></C> <C>Optimal value.</C> </R>
|
|
<R> <C><FC>length<FN></C> <C>Initial length of the simplex.</C> </R>
|
|
<R> <C><FC>timeout<FN></C> <C>Maximum number of iterations.</C> </R>
|
|
<R> <C><FC>eps<FN></C> <C>Small real number to test convergence.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Demos<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\FaceDetection\FaceDetection.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\FaceDetection_LowLevel\FaceDetection_LowLevel.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\GetFaces\GetFaces.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\TrackObjects\TrackObjects.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\TrackObjects_LowLevel\TrackObjects_LowLevel.dpr </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
// finds values (x0=vars[0] and x1=vars[1]) that minimze (x0-1)*(x0-1) + (x1-6)*(x1-6)
|
|
function optFunc(userData: pointer; vars: TIEVisionVectorDouble): double; stdcall;
|
|
var
|
|
x0, x1: double;
|
|
begin
|
|
x0 := vars.getDouble(0);
|
|
x1 := vars.getDouble(1);
|
|
result := (x0-1)*(x0-1) + (x1-6)*(x1-6);
|
|
end;
|
|
|
|
....
|
|
// vector of input and output variables
|
|
vec := IEVisionLib.createVectorDouble();
|
|
// initial values
|
|
vec.push_back(-1.2);
|
|
vec.push_back(1.0);
|
|
// find minimizing values
|
|
if not IEVisionLib.createMath().optimizeWith_NelderMeadSimplexMethod(@optFunc, nil, vec, optValue, 1.0, 1000, 1e-20) then
|
|
begin
|
|
x0 := vec.getDouble(0); // should be "1"
|
|
x1 := vec.getDouble(1); // should be "6"
|
|
// ...and optValue shoud be "0"
|
|
end;
|
|
....
|
|
|
|
!!}
|
|
function optimizeWith_NelderMeadSimplexMethod(func: TIEVisionOptimizerFunction; funcUserData: pointer; solutions: TIEVisionVectorDouble; out optimalValue: double; length: double = 1.0; timeout: int32_t = 1000; eps: double = 1.0e-20; wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.calcCovarMatrix
|
|
|
|
<FM>Declaration<FC>
|
|
procedure calcCovarMatrix(images: <A TIEVisionVectorImageRef>; covMat: <A TIEVisionImage>; avg: <A TIEVisionImage>; flags: <A TIEVisionCovarFlags>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates covariant matrix of specified images (matrices).
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>images<FN></C> <C>A list of images of the same size.</C> </R>
|
|
<R> <C><FC>covMat<FN></C> <C>Output covariant matrix.</C> </R>
|
|
<R> <C><FC>avg<FN></C> <C>Average of all input matrices.</C> </R>
|
|
<R> <C><FC>flags<FN></C> <C>Oprational flags.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure calcCovarMatrix(images: TIEVisionVectorImageRef; covMat: TIEVisionImage; avg: TIEVisionImage; flags: TIEVisionCovarFlags; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.cartToPolar
|
|
|
|
<FM>Declaration<FC>
|
|
procedure cartToPolar(x: <A TIEVisionImage>; y: <A TIEVisionImage>; magnitude: <A TIEVisionImage>; angle: <A TIEVisionImage>; angleInDegrees: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates the magnitude and angle of 2D vectors.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>x<FN></C> <C>Array of x-coordinates. This must be a single-precision or double-precision floating-point array.</C> </R>
|
|
<R> <C><FC>y<FN></C> <C>Array of y-coordinates that must have the same size and same type as x.</C> </R>
|
|
<R> <C><FC>magnitude<FN></C> <C>Destination array of magnitudes of the same size and type as x .</C> </R>
|
|
<R> <C><FC>angle<FN></C> <C>Destination array of angles that has the same size and type as x. The angles are measured in radians (from 0 to 2*Pi) or in degrees (0 to 360 degrees).</C> </R>
|
|
<R> <C><FC>angleInDegrees<FN></C> <C>Flag indicating whether the angles are measured in radians, which is the default mode, or in degrees.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure cartToPolar(x: TIEVisionImage; y: TIEVisionImage; magnitude: TIEVisionImage; angle: TIEVisionImage; angleInDegrees: bool32 = false; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.genericMultiply
|
|
|
|
<FM>Declaration<FC>
|
|
procedure genericMultiply(src1: <A TIEVisionImage>; src2: <A TIEVisionImage>; alpha: double; src3: <A TIEVisionImage>; beta: double; dest: <A TIEVisionImage>; flags: <A TIEVisionGEMMFlags> = ievGEMM_NONE); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Performs generalized matrix multiplication.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src1<FN></C> <C>First multiplied input matrix that should have 32 bit floating point (1 channel), 64 bit floating point (1 channel) , 32 bit floating point (2 channels), or 64 bit floating point (2 channels) type.</C> </R>
|
|
<R> <C><FC>src2<FN></C> <C>Second multiplied input matrix of the same type as src1 .</C> </R>
|
|
<R> <C><FC>alpha<FN></C> <C>Weight of the matrix product.</C> </R>
|
|
<R> <C><FC>src3<FN></C> <C>Third optional delta matrix added to the matrix product. It should have the same type as src1 and src2.</C> </R>
|
|
<R> <C><FC>beta<FN></C> <C>Weight of src3.</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Destination matrix. It has the proper size and the same type as input matrices.</C> </R>
|
|
<R> <C><FC>flags<FN></C> <C>Operation flag.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure genericMultiply(src1: TIEVisionImage; src2: TIEVisionImage; alpha: double; src3: TIEVisionImage; beta: double; dest: TIEVisionImage; flags: TIEVisionGEMMFlags = ievGEMM_NONE; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.mahalonobisDistance
|
|
|
|
<FM>Declaration<FC>
|
|
function mahalonobisDistance(vec1: <A TIEVisionImage>; vec2: <A TIEVisionImage>; invCovMatrix: <A TIEVisionImage>): double; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates the Mahalanobis distance between two vectors.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>vec1<FN></C> <C>First 1D source vector.</C> </R>
|
|
<R> <C><FC>vec2<FN></C> <C>Second 1D source vector.</C> </R>
|
|
<R> <C><FC>invCovMatrix<FN></C> <C>Inverse covariance matrix.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function mahalonobisDistance(vec1: TIEVisionImage; vec2: TIEVisionImage; invCovMatrix: TIEVisionImage; wantExceptions: bool32 = false): double; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.solve
|
|
|
|
<FM>Declaration<FC>
|
|
function solve(source1: <A TIEVisionImage>; source2: <A TIEVisionImage>; dest: <A TIEVisionImage>; method: <A TIEVisionSolveMethod>): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Solves one or more linear systems or least-squares problems.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>source1<FN></C> <C>Input matrix on the left-hand side of the system.</C> </R>
|
|
<R> <C><FC>source2<FN></C> <C>Input matrix on the right-hand side of the system.</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Output solution.</C> </R>
|
|
<R> <C><FC>method<FN></C> <C>Solution (matrix inversion) method.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function solve(source1: TIEVisionImage; source2: TIEVisionImage; dest: TIEVisionImage; method: TIEVisionSolveMethod; wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.solveCubic
|
|
|
|
<FM>Declaration<FC>
|
|
procedure solveCubic(coeffs: <A TIEVisionImage>; roots: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Finds the real roots of a cubic equation.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>coeffs<FN></C> <C>Equation coefficients, an array of 3 or 4 elements.</C> </R>
|
|
<R> <C><FC>roots<FN></C> <C>Destination array of real roots that has 1 or 3 elements.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure solveCubic(coeffs: TIEVisionImage; roots: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.sub
|
|
|
|
<FM>Declaration<FC>
|
|
procedure sub(lhs: <A TIEVisionImage>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>; mask: <A TIEVisionImage>); overload; safecall;
|
|
procedure sub(lhs: <A TIEVisionImage>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>); overload; safecall;
|
|
procedure sub(lhs: <A TIEVisionScalar>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>; mask: <A TIEVisionImage>); overload; safecall;
|
|
procedure sub(lhs: <A TIEVisionScalar>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>); overload; safecall;
|
|
procedure sub(lhs: <A TIEVisionImage>; rhs: <A TIEVisionScalar>; dest: <A TIEVisionImage>; mask: <A TIEVisionImage>); overload; safecall;
|
|
procedure sub(lhs: <A TIEVisionImage>; rhs: <A TIEVisionScalar>; dest: <A TIEVisionImage>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Subtracts left-hand side image (matrix) or scalar to the right-hand side image (matrix) or scalar and puts resulting image (matrix) in the specified destination.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>lhs<FN></C> <C>Left-hand side image or scalar.</C> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>Right-hand side image or scalar.</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image (or matrix).</C> </R>
|
|
<R> <C><FC>mask<FN></C> <C>Optional operation mask.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure sub(lhs: TIEVisionImage; rhs: TIEVisionImage; dest: TIEVisionImage; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure sub(lhs: TIEVisionImage; rhs: TIEVisionImage; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure sub(lhs: TIEVisionScalar; rhs: TIEVisionImage; dest: TIEVisionImage; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure sub(lhs: TIEVisionScalar; rhs: TIEVisionImage; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure sub(lhs: TIEVisionImage; rhs: TIEVisionScalar; dest: TIEVisionImage; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure sub(lhs: TIEVisionImage; rhs: TIEVisionScalar; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.add
|
|
|
|
<FM>Declaration<FC>
|
|
procedure add(lhs: <A TIEVisionImage>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>; mask: <A TIEVisionImage>); overload; safecall;
|
|
procedure add(lhs: <A TIEVisionImage>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>); overload; safecall;
|
|
procedure add(lhs: <A TIEVisionImage>; rhs: <A TIEVisionScalar>; dest: <A TIEVisionImage>; mask: <A TIEVisionImage>); overload; safecall;
|
|
procedure add(lhs: <A TIEVisionImage>; rhs: <A TIEVisionScalar>; dest: <A TIEVisionImage>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Adds left-hand side iamge (matrix) or scalar to the right-hand side image (matrix) or scalar and puts resulting image (matrix) in the specified destination.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>lhs<FN></C> <C>Left-hand side image or scalar.</C> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>Right-hand side image or scalar.</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image (or matrix).</C> </R>
|
|
<R> <C><FC>mask<FN></C> <C>Optional operation mask.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure add(lhs: TIEVisionImage; rhs: TIEVisionImage; dest: TIEVisionImage; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure add(lhs: TIEVisionImage; rhs: TIEVisionImage; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure add(lhs: TIEVisionImage; rhs: TIEVisionScalar; dest: TIEVisionImage; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure add(lhs: TIEVisionImage; rhs: TIEVisionScalar; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.absDiff
|
|
|
|
<FM>Declaration<FC>
|
|
procedure absDiff(lhs: <A TIEVisionImage>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>); overload; safecall;
|
|
procedure absDiff(lhs: <A TIEVisionImage>; rhs: <A TIEVisionScalar>; dest: <A TIEVisionImage>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates absolute difference of left-hand side image (matrix) and right-hand side image (matrix) or scalar and puts resulting image (matrix) in the specified destination.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>lhs<FN></C> <C>Left-hand side image (matrix).</C> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>Right-hand side image (matrix) or scalar.</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image (or matrix).</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure absDiff(lhs: TIEVisionImage; rhs: TIEVisionImage; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure absDiff(lhs: TIEVisionImage; rhs: TIEVisionScalar; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.opAnd
|
|
|
|
<FM>Declaration<FC>
|
|
procedure opAnd(lhs: <A TIEVisionImage>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>); overload; safecall;
|
|
procedure opAnd(lhs: <A TIEVisionImage>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>; mask: <A TIEVisionImage>); overload; safecall;
|
|
procedure opAnd(lhs: <A TIEVisionImage>; rhs: <A TIEVisionScalar>; dest: <A TIEVisionImage>; mask: <A TIEVisionImage>); overload; safecall;
|
|
procedure opAnd(lhs: <A TIEVisionImage>; rhs: <A TIEVisionScalar>; dest: <A TIEVisionImage>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Performs bitwise and of left-hand side image (matrix) and right-hand side image (matrix) or scalar and puts resulting image (matrix) in the specified destination.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>lhs<FN></C> <C>Left-hand side image (matrix).</C> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>Right-hand side image or scalar (matrix).</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image (or matrix).</C> </R>
|
|
<R> <C><FC>mask<FN></C> <C>Operation mask.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure opAnd(lhs: TIEVisionImage; rhs: TIEVisionImage; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure opAnd(lhs: TIEVisionImage; rhs: TIEVisionImage; dest: TIEVisionImage; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure opAnd(lhs: TIEVisionImage; rhs: TIEVisionScalar; dest: TIEVisionImage; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure opAnd(lhs: TIEVisionImage; rhs: TIEVisionScalar; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.opDiv
|
|
|
|
<FM>Declaration<FC>
|
|
procedure opDiv(lhs: <A TIEVisionImage>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>; scale: double = 1.0); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Divides left-hand side image (matrix) with right-side image (matrix) and puts resulting image (matrix) in the specified destination.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>lhs<FN></C> <C>Left-hand side image (matrix).</C> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>Right-hand side image (matrix).</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image (or matrix).</C> </R>
|
|
<R> <C><FC>scale<FN></C> <C>Optional scalar multiplier.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure opDiv(lhs: TIEVisionImage; rhs: TIEVisionImage; dest: TIEVisionImage; scale: double = 1.0; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.exp
|
|
|
|
<FM>Declaration<FC>
|
|
procedure exp(src: <A TIEVisionImage>; dest: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates the exponent of every image element.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Source image (matrix).</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image (matrix).</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure exp(src: TIEVisionImage; dest: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.log
|
|
|
|
<FM>Declaration<FC>
|
|
procedure log(src: <A TIEVisionImage>; dest: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates the natural logarithm of every image element.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Source image (matrix).</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image (matrix).</C> </R>
|
|
</TABLE>
|
|
|
|
!!}
|
|
procedure log(src: TIEVisionImage; dest: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.mul
|
|
|
|
<FM>Declaration<FC>
|
|
procedure mul(lhs: <A TIEVisionImage>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>; scale: double = 1.0); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates the per-element scaled product of two images.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>lhs<FN></C> <C>Left-hand side image (matrix).</C> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>Right-hand side image (matrix).</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image (matrix).</C> </R>
|
|
<R> <C><FC>scale<FN></C> <C>Optional scalar multiplier.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure mul(lhs: TIEVisionImage; rhs: TIEVisionImage; dest: TIEVisionImage; scale: double = 1.0; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.opOr
|
|
|
|
<FM>Declaration<FC>
|
|
procedure opOr(lhs: <A TIEVisionImage>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>; mask: <A TIEVisionImage>); overload; safecall;
|
|
procedure opOr(lhs: <A TIEVisionImage>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>); overload; safecall;
|
|
procedure opOr(lhs: <A TIEVisionImage>; rhs: <A TIEVisionScalar>; dest: <A TIEVisionImage>; mask: <A TIEVisionImage>); overload; safecall;
|
|
procedure opOr(lhs: <A TIEVisionImage>; rhs: <A TIEVisionScalar>; dest: <A TIEVisionImage>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates the per-element bit-wise disjunction of two images or an image and a scalar.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>lhs<FN></C> <C>Left-hand side image (matrix).</C> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>Right-hand side image (matrix).</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image (matrix).</C> </R>
|
|
<R> <C><FC>mask<FN></C> <C>Optional operation mask.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure opOr(lhs: TIEVisionImage; rhs: TIEVisionImage; dest: TIEVisionImage; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure opOr(lhs: TIEVisionImage; rhs: TIEVisionImage; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure opOr(lhs: TIEVisionImage; rhs: TIEVisionScalar; dest: TIEVisionImage; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure opOr(lhs: TIEVisionImage; rhs: TIEVisionScalar; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.pow
|
|
|
|
<FM>Declaration<FC>
|
|
procedure pow(src: <A TIEVisionImage>; dest: <A TIEVisionImage>; power: double); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Raises every image element to a power.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Source image (matrix).</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image (matrix).</C> </R>
|
|
<R> <C><FC>power<FN></C> <C>Exponent of power.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure pow(src: TIEVisionImage; dest: TIEVisionImage; power: double; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.trace
|
|
|
|
<FM>Declaration<FC>
|
|
function trace(src: <A TIEVisionImage>): <A TIEVisionScalar>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the trace of a matrix.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Source image.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function trace(src: TIEVisionImage; wantExceptions: bool32 = false): TIEVisionScalar; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.transform
|
|
|
|
<FM>Declaration<FC>
|
|
procedure transform(src: <A TIEVisionImage>; dest: <A TIEVisionImage>; transfMatrix: <A TIEVisionImage>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Performs the matrix transformation of every image element.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Source image (matrix).</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image (matrix).</C> </R>
|
|
<R> <C><FC>transfMatrix<FN></C> <C>Transformation 2x2 or 2x3 floating-point matrix.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure transform(src: TIEVisionImage; dest: TIEVisionImage; transfMatrix: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.transpose
|
|
|
|
<FM>Declaration<FC>
|
|
procedure transpose(src: <A TIEVisionImage>; dest: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Transposes a matrix.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Source image (matrix).</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image (matrix).</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure transpose(src: TIEVisionImage; dest: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.opXor
|
|
|
|
<FM>Declaration<FC>
|
|
procedure opXor(lhs: <A TIEVisionImage>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>; mask: <A TIEVisionImage>); overload; safecall;
|
|
procedure opXor(lhs: <A TIEVisionImage>; rhs: <A TIEVisionImage>; dest: <A TIEVisionImage>); overload; safecall;
|
|
procedure opXor(lhs: <A TIEVisionImage>; rhs: <A TIEVisionScalar>; dest: <A TIEVisionImage>; mask: <A TIEVisionImage>); overload; safecall;
|
|
procedure opXor(lhs: <A TIEVisionImage>; rhs: <A TIEVisionScalar>; dest: <A TIEVisionImage>); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates the per-element bit-wise "exclusive or" operation on two images (matrix) or an image (matrix) and a scalar.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>lhs<FN></C> <C>Left-hand side image (matrix).</C> </R>
|
|
<R> <C><FC>rhs<FN></C> <C>Right-hand side image (matrix).</C> </R>
|
|
<R> <C><FC>dest<FN></C> <C>Container for the resulting image (matrix).</C> </R>
|
|
<R> <C><FC>mask<FN></C> <C>Operation mask.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure opXor(lhs: TIEVisionImage; rhs: TIEVisionImage; dest: TIEVisionImage; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure opXor(lhs: TIEVisionImage; rhs: TIEVisionImage; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure opXor(lhs: TIEVisionImage; rhs: TIEVisionScalar; dest: TIEVisionImage; mask: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure opXor(lhs: TIEVisionImage; rhs: TIEVisionScalar; dest: TIEVisionImage; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.boundingRect
|
|
|
|
<FM>Declaration<FC>
|
|
function boundingRect(points: <A TIEVisionVectorPoint>): <A TIEVisionRect>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates the up-right bounding rectangle of a point set.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>points<FN></C> <C>Point set.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function boundingRect(points: TIEVisionVectorPoint; wantExceptions: bool32 = false): TIEVisionRect; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.contourArea
|
|
|
|
<FM>Declaration<FC>
|
|
function contourArea(points: <A TIEVisionVectorPoint>): double; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Calculates a contour area.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>points<FN></C> <C>Contour vertices.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function contourArea(points: TIEVisionVectorPoint; wantExceptions: bool32 = false): double; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.rectIntersect
|
|
|
|
<FM>Declaration<FC>
|
|
function rectIntersect(const rect1: <A TIEVisionRect>; const rect2: <A TIEVisionRect>): <A TIEVisionRect>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the intersection of two rectangles.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>rect1<FN></C> <C>First rectangle.</C> </R>
|
|
<R> <C><FC>rect2<FN></C> <C>Second rectangle.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function rectIntersect(const rect1: TIEVisionRect; const rect2: TIEVisionRect; wantExceptions: bool32 = false): TIEVisionRect; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.rectTestIntersect
|
|
|
|
<FM>Declaration<FC>
|
|
function rectTestIntersect(const rect1: <A TIEVisionRect>; const rect2: <A TIEVisionRect>): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Tests if two rectangles intersect.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>rect1<FN></C> <C>First rectangle.</C> </R>
|
|
<R> <C><FC>rect2<FN></C> <C>Second rectangle.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function rectTestIntersect(const rect1: TIEVisionRect; const rect2: TIEVisionRect; wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.rectUnion
|
|
|
|
<FM>Declaration<FC>
|
|
function rectUnion(const rect1: <A TIEVisionRect>; const rect2: <A TIEVisionRect>): <A TIEVisionRect>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the union of two rectangles.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>rect1<FN></C> <C>First rectangle.</C> </R>
|
|
<R> <C><FC>rect2<FN></C> <C>Second rectangle.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function rectUnion(const rect1: TIEVisionRect; const rect2: TIEVisionRect; wantExceptions: bool32 = false): TIEVisionRect; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionMath.rectContains
|
|
|
|
<FM>Declaration<FC>
|
|
function rectContains(const rect: <A TIEVisionRect>; const point: <A TIEVisionPoint>): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Tests if a point is inside a rectangle.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>rect<FN></C> <C>Rectangle.</C> </R>
|
|
<R> <C><FC>point<FN></C> <C>Point to test.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function rectContains(const rect: TIEVisionRect; const point: TIEVisionPoint; wantExceptions: bool32 = false): bool32; safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionDrawing
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionDrawing = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface contains a set of drawing primitives, to paint over a <A TIEVisionImage> objects.
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionDrawing.circle></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionDrawing.drawContours></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionDrawing.ellipse></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionDrawing.rectangle></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionDrawing = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionDrawing.rectangle
|
|
|
|
<FM>Declaration<FC>
|
|
procedure rectangle(image: <A TIEVisionImage>; pt1: <A TIEVisionPoint>; pt2: <A TIEVisionPoint>; const color: <A TIEVisionScalar>; thickness: int32_t = 1; linetype: int32_t = 8; shift: int32_t = 0); overload; safecall;
|
|
procedure rectangle(image: <A TIEVisionImage>; const rect: <A TIEVisionRect>; const color: <A TIEVisionScalar>; thickness: int32_t = 1; linetype: int32_t = 8; shift: int32_t = 0); overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Draws a rectangle.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Destination image.</C> </R>
|
|
<R> <C><FC>pt1<FN></C> <C>Top-left rectangle point.</C> </R>
|
|
<R> <C><FC>pt2<FN></C> <C>Bottom-right rectangle point.</C> </R>
|
|
<R> <C><FC>color<FN></C> <C>Rectangle color.</C> </R>
|
|
<R> <C><FC>thickness<FN></C> <C>Line width.</C> </R>
|
|
<R> <C><FC>linetype<FN></C> <C>Line type.</C> </R>
|
|
<R> <C><FC>shift<FN></C> <C>Thickness of lines that make up the rectangle. Negative values mean that the function has to draw a filled rectangle.</C> </R>
|
|
<R> <C><FC>rect<FN></C> <C>Number of fractional bits in the point coordinates.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure rectangle(image: TIEVisionImage; pt1: TIEVisionPoint; pt2: TIEVisionPoint; const color: TIEVisionScalar; thickness: int32_t = 1; linetype: int32_t = 8; shift: int32_t = 0; wantExceptions: bool32 = false); overload; safecall;
|
|
procedure rectangle(image: TIEVisionImage; const rect: TIEVisionRect; const color: TIEVisionScalar; thickness: int32_t = 1; linetype: int32_t = 8; shift: int32_t = 0; wantExceptions: bool32 = false); overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionDrawing.circle
|
|
|
|
<FM>Declaration<FC>
|
|
procedure circle(image: <A TIEVisionImage>; center: <A TIEVisionPoint>; radius: int32_t; color: <A TIEVisionScalar>; thickness: int32_t = 1; linetype: int32_t = 8; shift: int32_t = 0); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Draw a circle.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Destination image.</C> </R>
|
|
<R> <C><FC>center<FN></C> <C>Center of the circle.</C> </R>
|
|
<R> <C><FC>radius<FN></C> <C>Radius of the circle.</C> </R>
|
|
<R> <C><FC>color<FN></C> <C>Rectangle color.</C> </R>
|
|
<R> <C><FC>thickness<FN></C> <C>Line width.</C> </R>
|
|
<R> <C><FC>linetype<FN></C> <C>Line type.</C> </R>
|
|
<R> <C><FC>shift<FN></C> <C>Thickness of lines that make up the rectangle. Negative values mean that the function has to draw a filled circle.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure circle(image: TIEVisionImage; center: TIEVisionPoint; radius: int32_t; color: TIEVisionScalar; thickness: int32_t = 1; linetype: int32_t = 8; shift: int32_t = 0; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionDrawing.ellipse
|
|
|
|
<FM>Declaration<FC>
|
|
procedure ellipse(image: <A TIEVisionImage>; center: <A TIEVisionPoint>; axes: <A TIEVisionSize>; angle: double; startAngle: double; endAngle: double; color: <A TIEVisionScalar>; thickness: int32_t = 1; linetype: int32_t = 8; shift: int32_t = 0); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Draws an ellipse.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Destination image.</C> </R>
|
|
<R> <C><FC>center<FN></C> <C>Center of the ellipse.</C> </R>
|
|
<R> <C><FC>axes<FN></C> <C>Length of the ellipse axes.</C> </R>
|
|
<R> <C><FC>angle<FN></C> <C>Ellipse rotation angle in degrees.</C> </R>
|
|
<R> <C><FC>startAngle<FN></C> <C>Starting angle of the elliptic arc in degrees.</C> </R>
|
|
<R> <C><FC>endAngle<FN></C> <C>Ending angle of the elliptic arc in degrees.</C> </R>
|
|
<R> <C><FC>color<FN></C> <C>Rectangle color.</C> </R>
|
|
<R> <C><FC>thickness<FN></C> <C>Line width.</C> </R>
|
|
<R> <C><FC>linetype<FN></C> <C>Line type.</C> </R>
|
|
<R> <C><FC>shift<FN></C> <C>Thickness of lines that make up the rectangle. Negative values mean that the function has to draw a filled ellipse.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure ellipse(image: TIEVisionImage; center: TIEVisionPoint; axes: TIEVisionSize; angle: double; startAngle: double; endAngle: double; color: TIEVisionScalar; thickness: int32_t = 1; linetype: int32_t = 8; shift: int32_t = 0; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionDrawing.drawContours
|
|
|
|
<FM>Declaration<FC>
|
|
procedure drawContours(image: <A TIEVisionImage>; contours: <A TIEVisionVectorObjRef>; const color: <A TIEVisionScalar>; contourIdx: int32_t = -1; thickness: int32_t = 1; linetype: int32_t = 8); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Draws a contour.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Destination image.</C> </R>
|
|
<R> <C><FC>contours<FN></C> <C>A vector of vector of points. (TIEVisionVectorObjRef must contain <A TIEVisionVectorPoint> objects).</C> </R>
|
|
<R> <C><FC>color<FN></C> <C>Rectangle color.</C> </R>
|
|
<R> <C><FC>thickness<FN></C> <C>Line width.</C> </R>
|
|
<R> <C><FC>linetype<FN></C> <C>Line type.</C> </R>
|
|
<R> <C><FC>shift<FN></C> <C>Thickness of lines that make up the rectangle. Negative values mean that the function has to draw a filled polygon.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure drawContours(image: TIEVisionImage; contours: TIEVisionVectorObjRef; const color: TIEVisionScalar; contourIdx: int32_t = -1; thickness: int32_t = 1; linetype: int32_t = 8; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectTracker
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionObjectTracker = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to track an objected given its initial position.
|
|
Tracking is performed using Camshift algorithm.
|
|
|
|
<FM>Demo<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\TrackObjects\TrackObjects.dpr </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectTracker.locateNewPosition></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectTracker.setInitialPosition></C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionLibrary.createObjectTracker>
|
|
!!}
|
|
TIEVisionObjectTracker = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectTracker.setInitialPosition
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setInitialPosition(image: <A TIEVisionImage>; const window: <A TIEVisionRect>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Sets the initial object position.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Source image (where the object stays).</C> </R>
|
|
<R> <C><FC>window<FN></C> <C>Coordinates of rectangle containing the object.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionObjectTracker.locateNewPosition>
|
|
|
|
<FM>Demo<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\TrackObjects\TrackObjects.dpr </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure setInitialPosition(image: TIEVisionImage; const window: TIEVisionRect; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectTracker.locateNewPosition
|
|
|
|
<FM>Declaration<FC>
|
|
function locateNewPosition(image: <A TIEVisionImage>; out backProjectedImage: <A TIEVisionImage>): <A TIEVisionRotatedRect>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Locates the new position of the object. Before call locateNewPosition you must call <A TIEVisionObjectTracker.setInitialPosition>.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Source image.</C> </R>
|
|
<R> <C><FC>backProjectedImage<FN></C> <C>Image resulting of backprojection of object histogram.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionObjectTracker.setInitialPosition>
|
|
|
|
<FM>Demo<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\TrackObjects\TrackObjects.dpr </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function locateNewPosition(image: TIEVisionImage; out backProjectedImage: TIEVisionImage; wantExceptions: bool32 = false): TIEVisionRotatedRect; safecall;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionObjectsFinder = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to find an object or a set of different objects.
|
|
It is possible to load more than one classifier (object detector). Each classifier is executed on a different thread.
|
|
|
|
<FM>Demos<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\FaceDetection\FaceDetection.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\GetFaces\GetFaces.dpr </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.addClassifier></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.classifierExists></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.findIn></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.getClassifier></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.getFoundRect></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.getFoundRectCount></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.mergeAllRects></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.mergeRects></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.removeAllClassifiers></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.removeClassifier></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.setDivisor></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.setEqualizeHistogram></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.setHaarFlags></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.setHaarMinNeighbors></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.setHaarMaxSize></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.setHaarMinSize></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionObjectsFinder.setHaarScaleFactor></C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createObjectsFinder></C> </R>
|
|
<R> <C_IMG_CLASS> <C><A IEVision Embedded Classifiers></C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
var
|
|
objectsFinder: TIEVisionObjectsFinder;
|
|
rects: TIEVisionVectorRect;
|
|
...
|
|
// load two face detectors
|
|
objectsFinder := IEVisionLib.createObjectsFinder();
|
|
objectsFinder.addClassifier('face detector 1', IEVisionLib.createCascadeClassifier(IEVC_FRONTAL_FACE_ALT_TREE));
|
|
objectsFinder.addClassifier('face detector 2', IEVisionLib.createCascadeClassifier(IEVC_FRONTAL_FACE_DEFAULT));
|
|
|
|
// detect objects
|
|
objectsFinder.findIn(ImageEnView1.IEBitmap.GetIEVisionImage());
|
|
|
|
// merge intersecting rectangles of all searched objects
|
|
rects := objectsFinder.mergeAllRects();
|
|
|
|
// loop among rectangles
|
|
for i := 0 to rects.size-1 do
|
|
begin
|
|
ImageEnView1.ObjPenWidth[-1] := 2;
|
|
with rects.getRect(i) do
|
|
begin
|
|
... do something with the rectangle coordinates and size
|
|
end;
|
|
end;
|
|
|
|
!!}
|
|
TIEVisionObjectsFinder = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.addClassifier
|
|
|
|
<FM>Declaration<FC>
|
|
procedure addClassifier(name: PAnsiChar; classifier: <A TIEVisionBase>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Adds a new classifier (object detector) to the classifiers set.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>name<FN></C> <C>Name of the classifier. This name is used only for the user convenience.</C> </R>
|
|
<R> <C><FC>classifier<FN></C> <C>Actual object detector.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionObjectsFinder.removeClassifier>
|
|
- <A IEVision Embedded Classifiers>
|
|
|
|
<FM>Example<FC>
|
|
// load two face detectors
|
|
objectsFinder := IEVisionLib.createObjectsFinder();
|
|
objectsFinder.addClassifier('face detector 1', IEVisionLib.createCascadeClassifier(IEVC_FRONTAL_FACE_ALT_TREE);
|
|
objectsFinder.addClassifier('face detector 2', IEVisionLib.createCascadeClassifier(IEVC_FRONTAL_FACE_DEFAULT));
|
|
|
|
!!}
|
|
procedure addClassifier(name: PAnsiChar; classifier: TIEVisionBase; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.getClassifier
|
|
|
|
<FM>Declaration<FC>
|
|
function getClassifier(name: PAnsiChar): <A TIEVisionBase>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the classifier added with this name.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>name<FN></C> <C>Classifier name to find.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getClassifier(name: PAnsiChar; wantExceptions: bool32 = false): TIEVisionBase; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.findIn
|
|
|
|
<FM>Declaration<FC>
|
|
procedure findIn(image: <A TIEVisionImage>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Loops among all added classifiers to find objects inside the specified image.
|
|
Objects found are returned by <A TIEVisionObjectsFinder.getFoundRectCount> and <A TIEVisionObjectsFinder.getFoundRect>.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Image where to find the objects.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// detect objects
|
|
objectsFinder.findIn(ImageEnView1.IEBitmap.GetIEVisionImage());
|
|
!!}
|
|
procedure findIn(image: TIEVisionImage; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.getFoundRectCount
|
|
|
|
<FM>Declaration<FC>
|
|
function getFoundRectCount(name: PAnsiChar): int32_t; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns number of found objects for the specified object detector.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>name<FN></C> <C>Object detector.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionObjectsFinder.findIn>
|
|
- <A TIEVisionObjectsFinder.getFoundRect>
|
|
- <A TIEVisionObjectsFinder.mergeRects>
|
|
- <A TIEVisionObjectsFinder.mergeAllRects>
|
|
|
|
<FM>Example<FC>
|
|
objectsFinder.findIn(image);
|
|
foundRects := objectsFinder.getFoundRectCount('face detector 1');
|
|
!!}
|
|
function getFoundRectCount(name: PAnsiChar; wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.getFoundRect
|
|
|
|
<FM>Declaration<FC>
|
|
function getFoundRect(name: PAnsiChar; index: int32_t): <A TIEVisionRect>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the nth object found for the specified object detector.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>name<FN></C> <C>Name of object detector.</C> </R>
|
|
<R> <C><FC>index<FN></C> <C>Index of found rectangle.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionObjectsFinder.findIn>
|
|
- <A TIEVisionObjectsFinder.getFoundRectCount>
|
|
- <A TIEVisionObjectsFinder.mergeRects>
|
|
- <A TIEVisionObjectsFinder.mergeAllRects>
|
|
|
|
<FM>Example<FC>
|
|
objectsFinder.findIn(image);
|
|
foundRects := objectsFinder.getFoundRectCount('face detector 1');
|
|
for i := 0 to foundRects-1 do
|
|
with GetFoundRect('face detector 1', i) do
|
|
begin
|
|
// do something with x, y and width, height
|
|
end;
|
|
!!}
|
|
function getFoundRect(name: PAnsiChar; index: int32_t; wantExceptions: bool32 = false): TIEVisionRect; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.mergeRects
|
|
|
|
<FM>Declaration<FC>
|
|
function mergeRects(name1: PAnsiChar; name2: PAnsiChar): <A TIEVisionVectorRect>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Merges rectangles that intersect of the specified objects detectors.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>name1<FN></C> <C>Name of an object detector.</C> </R>
|
|
<R> <C><FC>name2<FN></C> <C>Name of an object detector.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionObjectsFinder.findIn>
|
|
- <A TIEVisionObjectsFinder.getFoundRect>
|
|
- <A TIEVisionObjectsFinder.getFoundRectCount>
|
|
- <A TIEVisionObjectsFinder.mergeAllRects>
|
|
|
|
<FM>Example<FC>
|
|
// detect objects
|
|
objectsFinder.findIn(image);
|
|
|
|
// merge intersecting rectangles of "face1" and "face2" detectors
|
|
rects := objectsFinder.mergeRects("face1", "face2");
|
|
|
|
// loop among rectangles
|
|
for i := 0 to rects.size-1 do
|
|
begin
|
|
ImageEnView1.ObjPenWidth[-1] := 2;
|
|
with rects.getRect(i) do
|
|
begin
|
|
... do something with the rectangle coordinates and size
|
|
end;
|
|
end;
|
|
!!}
|
|
function mergeRects(name1: PAnsiChar; name2: PAnsiChar; wantExceptions: bool32 = false): TIEVisionVectorRect; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.mergeAllRects
|
|
|
|
<FM>Declaration<FC>
|
|
function mergeAllRects(): <A TIEVisionVectorRect>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Merges rectangles that intersect of all object detectors.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionObjectsFinder.findIn>
|
|
- <A TIEVisionObjectsFinder.getFoundRect>
|
|
- <A TIEVisionObjectsFinder.getFoundRectCount>
|
|
- <A TIEVisionObjectsFinder.mergeRects>
|
|
|
|
<FM>Example<FC>
|
|
// detect objects
|
|
objectsFinder.findIn(image);
|
|
|
|
// merge intersecting rectangles
|
|
rects := objectsFinder.mergeAllRects();
|
|
|
|
// loop among rectangles
|
|
for i := 0 to rects.size-1 do
|
|
begin
|
|
ImageEnView1.ObjPenWidth[-1] := 2;
|
|
with rects.getRect(i) do
|
|
begin
|
|
... do something with the rectangle coordinates and size
|
|
end;
|
|
end;
|
|
!!}
|
|
function mergeAllRects(wantExceptions: bool32 = false): TIEVisionVectorRect; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.removeAllClassifiers
|
|
|
|
<FM>Declaration<FC>
|
|
procedure removeAllClassifiers(); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Removes all added classifiers.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionObjectsFinder.addClassifier>
|
|
- <A TIEVisionObjectsFinder.removeClassifier>
|
|
!!}
|
|
procedure removeAllClassifiers(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.classifierExists
|
|
|
|
<FM>Declaration<FC>
|
|
function classifierExists(name: PAnsiChar): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Tests if a classifier has been loaded.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>name<FN></C> <C>Name of classifier to test presence.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function classifierExists(name: PAnsiChar; wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.removeClassifier
|
|
|
|
<FM>Declaration<FC>
|
|
procedure removeClassifier(name: PAnsiChar); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Removes the specified classifier.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>name<FN></C> <C>Classifier to remove.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEVisionObjectsFinder.addClassifier>
|
|
!!}
|
|
procedure removeClassifier(name: PAnsiChar; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.setDivisor
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setDivisor(value: int32_t); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Sets the divisor value. A temporary image is created subsampling the source image by the divisor factor.
|
|
Object detector will look for the object inside the temporary image, instead of full image.
|
|
Default value is 3 (divide source image by 3). For fine (but slow) detection sets to 1.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Divisor value.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
objectfinder.setDivisor(1);
|
|
objectsFinder.findIn(image);
|
|
!!}
|
|
procedure setDivisor(value: int32_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.setHaarScaleFactor
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setHaarScaleFactor(value: double); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Scale factor specifies how much the image size is reduced at each image scale.
|
|
|
|
Default: 1.1
|
|
|
|
Note: This setting is specific to the Haar Classifier.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Scale factor value.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure setHaarScaleFactor(value: double; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.setHaarMinNeighbors
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setHaarMinNeighbors(value: int32_t); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Haar minimum neighbors specifies how many neighbors each candiate rectangle should have to retain it.
|
|
|
|
Default: 3
|
|
|
|
Note: This setting is specific to the Haar Classifier.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Minimum neighbors value.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
objectsFinder.setHaarMinNeighbors(4);
|
|
objectsFinder.findIn(image);
|
|
!!}
|
|
procedure setHaarMinNeighbors(value: int32_t; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.setHaarFlags
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setHaarFlags(value: <A TIEVisionHaarDetectObjectsFlags>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Specifies Haar classifier flags.
|
|
|
|
Default: ievDO_CANNY_PRUNING
|
|
|
|
Note: This setting is specific to the Haar Classifier.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Haar flags.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure setHaarFlags(value: TIEVisionHaarDetectObjectsFlags; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.setEqualizeHistogram
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setEqualizeHistogram(value: bool32); safecall;
|
|
|
|
<FM>Description<FN>
|
|
If true an histogram equalization is performed before objects detection.
|
|
|
|
Default: true
|
|
!!}
|
|
procedure setEqualizeHistogram(value: bool32; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.setHaarMinSize
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setHaarMinSize(size: <A TIEVisionSize>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Sets the minimum size of detected object.
|
|
|
|
Default: (0, 0)
|
|
!!}
|
|
procedure setHaarMinSize(size: TIEVisionSize; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionObjectsFinder.setHaarMaxSize
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setHaarMaxSize(size: <A TIEVisionSize>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Sets the maximum size of detected object.
|
|
|
|
Default: (0, 0)
|
|
!!}
|
|
procedure setHaarMaxSize(size: TIEVisionSize; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionOCR
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionOCR = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to perform basic OCR (Optical Character Recognition) in English and <L TIEVisionLanguages>35 other languages</L>.
|
|
It is possible to recognize a specific image area or the whole image.
|
|
For recognition it means:
|
|
- gets the ANSI or Unicode text from raster image
|
|
- estimates the document orientation (text angle)
|
|
- gets each recognized character position (bounding box)
|
|
- gets text regions (to reproduce text layout)
|
|
|
|
To support OCR language specify the path of the language file when calling IEVisionLib.createOCR.
|
|
|
|
Only one single instance of this object can exist in your application.
|
|
|
|
<FM>Demos<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\OCR\OCR.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\OCRwithLayout\OCRwithLayout.dpr </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionOCR.clearAdaptiveInfo></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionOCR.getBoxes></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionOCR.getOrientation></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionOCR.getRegions></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionOCR.getTextAngle></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionOCR.isWordValid></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionOCR.recognize></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionOCR.setSegmentationMode></C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createOCR></C> </R>
|
|
<R> <C_IMG_CLASS> <C><A TIEVisionLanguages></C> </R>
|
|
<R> <C_IMG_GLOBMETHOD> <C><A IEVisionLanguageCodeToName></C> </R>
|
|
<R> <C_IMG_GLOBMETHOD> <C><A IEVisionLanguageNameToCode></C> </R>
|
|
<R> <C_IMG_GLOBMETHOD> <C><A IEVisionGetLanguagesInFolder></C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
// perform OCR
|
|
str := IEVisionLib.createOCR(IEOCRLanguageList[OCR_English_language].Code).recognize(ImageEnView1.IEBitmap.GetIEVisionImage(), IEVisionRect(0, 0, 0, 0)).c_str();
|
|
!!}
|
|
TIEVisionOCR = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionOCR.recognize
|
|
|
|
<FM>Declaration<FC>
|
|
function recognize(image: <A TIEVisionImage>; const rect: <A TIEVisionRect>): <A TIEVisionWString>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Performs OCR on the specified area of the image returning an ANSI string.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Source image.</C> </R>
|
|
<R> <C><FC>rect<FN></C> <C>Rectangle of interest. Setting (0, 0, 0, 0) means "entire image".</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example 1<FC>
|
|
|
|
// perform OCR
|
|
OCR := IEVisionLib.createOCR(IEOCRLanguageList[OCR_English_language].Code);
|
|
str := OCR.recognize(ImageEnView1.IEBitmap.GetIEVisionImage(), IEVisionRect(0, 0, 0, 0)).c_str();
|
|
|
|
|
|
<FM>Example 2<FC>
|
|
|
|
Allow switching of language:
|
|
|
|
// Set language based on selection
|
|
Case LanguageRadioGroup.ItemIndex of
|
|
0 : OCR := IEVisionLib.createOCR(IEOCRLanguageList[OCR_English_language].Code);
|
|
1 : OCR := IEVisionLib.createOCR(IEOCRLanguageList[OCR_French_language].Code);
|
|
2 : OCR := IEVisionLib.createOCR(IEOCRLanguageList[OCR_German_language].Code);
|
|
End;
|
|
|
|
// Perform OCR
|
|
str := OCR.recognize(ImageEnView1.IEBitmap.GetIEVisionImage(), IEVisionRect(0, 0, 0, 0)).c_str();
|
|
|
|
// Reset OCR object
|
|
OCR := nil;
|
|
|
|
!!}
|
|
function recognize(image: TIEVisionImage; const rect: TIEVisionRect; wantExceptions: bool32 = false): TIEVisionWString; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCR.clearAdaptiveInfo
|
|
|
|
<FM>Declaration<FC>
|
|
procedure clearAdaptiveInfo(); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Removes adaptive information. Call this method whenever a new page or document must be processed.
|
|
|
|
|
|
<FM>Example<FC>
|
|
// perform OCR
|
|
OCR := IEVisionLib.createOCR(IEOCRLanguageList[OCR_English_language].Code); // english language
|
|
// page 0
|
|
str_page0 := OCR.recognize(image_page0, IEVisionRect(0, 0, 0, 0));
|
|
// page 1
|
|
OCR.clearAdaptiveInfo();
|
|
str_page1 := OCR.recognize(image_page1, IEVisionRect(0, 0, 0, 0));
|
|
// page 2
|
|
OCR.clearAdaptiveInfo();
|
|
str_page2 := OCR.recognize(image_page2, IEVisionRect(0, 0, 0, 0));
|
|
!!}
|
|
procedure clearAdaptiveInfo(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCR.isWordValid
|
|
|
|
<FM>Declaration<FC>
|
|
function isWordValid(word: PAnsiChar): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Tests if the specified word is valid for currently loaded language.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>word<FN></C> <C>Word to test.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function isWordValid(word: PAnsiChar; wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCR.getBoxes
|
|
|
|
<FM>Declaration<FC>
|
|
function getBoxes(): <A TIEVisionVectorOCRBox>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns a rectangle position and size for each recognized character.
|
|
|
|
|
|
<FM>Example<FC>
|
|
// Draw rectangles around recognized characters
|
|
procedure TMainForm.Button2Click(Sender: TObject);
|
|
var
|
|
boxes: TIEVisionVectorOCRBox;
|
|
i: integer;
|
|
begin
|
|
ImageEnView1.IEBitmap.Canvas.Pen.Color := clRed;
|
|
ImageEnView1.IEBitmap.Canvas.Brush.Style := bsClear;
|
|
|
|
boxes := m_OCR.getBoxes();
|
|
for i := 0 to boxes.size()-1 do
|
|
with boxes.getOCRBox(i) do
|
|
ImageEnView1.IEBitmap.Canvas.Rectangle(rect.x, rect.y, rect.x+rect.width, rect.y+rect.height);
|
|
|
|
ImageEnView1.Update();
|
|
end;
|
|
!!}
|
|
function getBoxes(wantExceptions: bool32 = false): TIEVisionVectorOCRBox; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCR.getTextAngle
|
|
|
|
<FM>Declaration<FC>
|
|
function getTextAngle(): single; overload; safecall;
|
|
function getTextAngle(image: <A TIEVisionImage>): single; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns text angle (orientation) in radians.
|
|
First overload takes last processed image as input.
|
|
Second overload takes the specified image as input.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Source image.</C> </R>
|
|
</TABLE>
|
|
|
|
See also: <A TIEVisionOCR.getOrientation>
|
|
|
|
<FM>Example<FC>
|
|
// detect orientation
|
|
angle := OCR.getTextAngle(image) * 180 / PI;
|
|
ImageEnView1.IEBitmap.Origin := ieboBOTTOMLEFT;
|
|
ImageEnView1.Proc.Rotate(-angle);
|
|
!!}
|
|
function getTextAngle(wantExceptions: bool32 = false): single; overload; safecall;
|
|
function getTextAngle(image: TIEVisionImage; wantExceptions: bool32 = false): single; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCR.getRegions
|
|
|
|
<FM>Declaration<FC>
|
|
function getRegions(textOnly: bool32 = false): <A TIEVisionVectorRect>; overload; safecall;
|
|
function getRegions(image: <A TIEVisionImage>; textOnly: bool32 = false): <A TIEVisionVectorRect>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Detects text regions (layout). In order to get document layout applications must set <A TIEVisionOCR.setSegmentationMode> to ievOCRAUTO.
|
|
First overload takes last processed image as input.
|
|
Second overload takes the specified image as input.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Source image.</C> </R>
|
|
<R> <C><FC>textOnly<FN></C> <C>If true then returns only text regions.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
OCR.setSegmentationMode(ievOCRAUTO);
|
|
regions := OCR.getRegions(image);
|
|
for i := 0 to regions.size()-1 do
|
|
with regions.getRect(i) do
|
|
begin
|
|
str := m_OCR.recognize(image, IEVisionRect(x, y, width, height));
|
|
end;
|
|
!!}
|
|
function getRegions(textOnly: bool32 = false; wantExceptions: bool32 = false): TIEVisionVectorRect; overload; safecall;
|
|
function getRegions(image: TIEVisionImage; textOnly: bool32 = false; wantExceptions: bool32 = false): TIEVisionVectorRect; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCR.setSegmentationMode
|
|
|
|
<FM>Declaration<FC>
|
|
procedure setSegmentationMode(value: <A TIEVisionOCRPageSegmentationMode>); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Specifies segmentation mode.
|
|
|
|
Note: <FC>setSegmentationMode<FN> requires the support file <FC>Osd.TrainedData<FN> for all languages
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>value<FN></C> <C>Segmentation mode to set.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
OCR.setSegmentationMode(ievOCRAUTO);
|
|
!!}
|
|
procedure setSegmentationMode(value: TIEVisionOCRPageSegmentationMode; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCR.getWordBoxes
|
|
|
|
<FM>Declaration<FC>
|
|
function getWordBoxes(): <A TIEVisionVectorObjRef>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Extracts words as Unicode text and their bounding boxes.
|
|
Returns a list of <A TIEVisionOCRWordBox> objects.
|
|
|
|
<FM>Example<FC>
|
|
var
|
|
boxes: TIEVisionVectorObjRef;
|
|
box: TIEVisionOCRWordBox;
|
|
i: integer;
|
|
begin
|
|
ImageEnView1.IEBitmap.Canvas.Pen.Color := clBlue;
|
|
ImageEnView1.IEBitmap.Canvas.Brush.Style := bsClear;
|
|
|
|
boxes := m_OCR.getWordBoxes();
|
|
for i := 0 to boxes.size() - 1 do
|
|
begin
|
|
box := TIEVisionOCRWordBox( boxes.getObj(i) );
|
|
with box.getBox() do
|
|
ImageEnView1.IEBitmap.Canvas.Rectangle(x, y, x + width, y + height);
|
|
end;
|
|
|
|
ImageEnVect1.Update();
|
|
end;
|
|
!!}
|
|
function getWordBoxes(wantExceptions: bool32 = false): TIEVisionVectorObjRef; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionOCR.getOrientation
|
|
|
|
<FM>Declaration<FC>
|
|
procedure getOrientation(out orientation: <A TIEVisionOCROrientation>; out writingDirection: <A TIEVisionOCRWritingDirection>; out textlineOrder: <A TIEVisionOCRTextlineOrder>; out deskewAngle: single; wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Return detail on the orientation, rotation and text direction of the document. This can be used for non-OCR applications, such as automatically correcting the rotation of scanned documents.
|
|
<FC>getOrientation<FN> should be called after <A TIEVisionOCR.getTextAngle> or <A TIEVisionOCR.recognize>.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>orientation<FN></C> <C>Character orientation, mainly used for document orientation, e.g. a page scanned upside-down would return <FC>ievOCROrientPAGE_DOWN<FN></C> </R>
|
|
<R> <C><FC>writingDirection<FN></C> <C>Writing direction</C> </R>
|
|
<R> <C><FC>textlineOrder<FN></C> <C>Line direction, e.g. Right-to-left for Arabic or Hebrew, or Top-to-bottom for some Asian text</C> </R>
|
|
<R> <C><FC>deskewAngle<FN></C> <C>Deskew angle in radians in the range -Pi/4 and Pi/4. The level of rotation required to correct a document scanned at an angle</C> </R>
|
|
</TABLE>
|
|
|
|
Note: <FC>getOrientation<FN> requires the support file <FC>Osd.TrainedData<FN> for all languages
|
|
|
|
<FM>Example<FC>
|
|
// AUTOMATICALLY ROTATE CURRENT DOCUMENT IMAGE TO CORRECT ORIENTATION
|
|
|
|
// Create OCR Engine
|
|
m_OCR := IEVisionLib.createOCR( sOcrFilesPath, IEOCRLanguageList[ OCR_English_language ].Code, ievOCRFAST );
|
|
|
|
// Detect orientation
|
|
m_OCR.setSegmentationMode( ievOCRAUTO_OSD );
|
|
angle := m_OCR.getTextAngle( ImageEnView1.IEBitmap.GetIEVisionImage() ) * 180 / PI;
|
|
|
|
// Retrieve orientation details
|
|
m_OCR.getOrientation( orientation, writingDirection, textlineOrder, deskewAngle );
|
|
deskewAngle := -deskewAngle * 180 / PI;
|
|
if orientation = ievOCROrientPAGE_RIGHT then
|
|
deskewAngle := deskewAngle - 90
|
|
else
|
|
if orientation = ievOCROrientPAGE_DOWN then
|
|
deskewAngle := deskewAngle - 180
|
|
else
|
|
if orientation = ievOCROrientPAGE_LEFT then
|
|
deskewAngle := deskewAngle - 270;
|
|
|
|
if deskewAngle <> 0 then
|
|
ImageEnView1.Proc.Rotate( -deskewAngle );
|
|
!!}
|
|
procedure getOrientation(out orientation: TIEVisionOCROrientation; out writingDirection: TIEVisionOCRWritingDirection; out textlineOrder: TIEVisionOCRTextlineOrder; out deskewAngle: single; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionPeopleDetector
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionPeopleDetector = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to perform people (body) detection.
|
|
|
|
<FM>Demo<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\GetPeople\GetPeople.dpr </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionPeopleDetector.detect></C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createPeopleDetector></C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
detector := IEVisionLib.createPeopleDetector();
|
|
found_rectangles := detector.detect(ImageEnView1.IEBitmap.GetIEVisionImage());
|
|
|
|
for i := 0 to found_rectangles.size()-1 do
|
|
with found_rectangles.getRect(i) do
|
|
begin
|
|
ImageEnView1.IEBitmap.Canvas.Brush.Style := bsClear;
|
|
ImageEnView1.IEBitmap.Canvas.Pen.Color := clRed;
|
|
ImageEnView1.IEBitmap.Canvas.Rectangle(x, y, x+width, y+height);
|
|
end;
|
|
ImageEnView1.Update();
|
|
!!}
|
|
TIEVisionPeopleDetector = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionPeopleDetector.detect
|
|
|
|
<FM>Declaration<FC>
|
|
function detect(image: <A TIEVisionImage>): <A TIEVisionVectorRect>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Finds all people's bodies in the specified image.
|
|
Returns a list of rectangles for each body found.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Image where to search for bodies.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function detect(image: TIEVisionImage; wantExceptions: bool32 = false): TIEVisionVectorRect; safecall;
|
|
|
|
end;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionBarCodeSymbol
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionBarCodeSymbol = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface represents a bar code detected symbol.
|
|
|
|
<FM>Demos<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\Barcode\Barcode.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\BarCodeCam\BarCodeCam.dpr </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBarCodeSymbol.getBoundingBox></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBarCodeSymbol.getData></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBarCodeSymbol.getSymbolType></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBarCodeSymbol.getXML></C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
var
|
|
symbols: TIEVisionVectorObjRef;
|
|
s: TIEVisionBarCodeSymbol;
|
|
i: integer;
|
|
begin
|
|
symbols := IEVisionLib.createBarCodeScanner().scan(ImageEnView1.IEBitmap.GetIEVisionImage(), IEVisionRect(0, 0, 0, 0));
|
|
for i := 0 to symbols.size() - 1 do
|
|
begin
|
|
s := TIEVisionBarCodeSymbol( symbols.getObj(i) );
|
|
Memo1.Lines.Add('type = ' + s.getSymbolType().c_str());
|
|
Memo1.Lines.Add('data = ' + s.getData().c_str());
|
|
with s.getBoundingBox() do
|
|
Memo1.Lines.Add('rect = ' + inttostr(x) + ' ' + inttostr(y) + ' ' + inttostr(width) + ' ' + inttostr(height));
|
|
end;
|
|
end;
|
|
!!}
|
|
TIEVisionBarCodeSymbol = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionBarCodeSymbol.getSymbolType
|
|
|
|
<FM>Declaration<FC>
|
|
function getSymbolType(wantExceptions: bool32 = false): <A TIEVisionWString>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns the bar code type. It can be one of the following strings:
|
|
|
|
<TABLE>
|
|
<R> <H>Bar code type string</H> </R>
|
|
<R> <C><FC>"EAN-8"<FN></C> </R>
|
|
<R> <C><FC>"UPC-E"<FN></C> </R>
|
|
<R> <C><FC>"ISBN-10"<FN></C> </R>
|
|
<R> <C><FC>"UPC-A"<FN></C> </R>
|
|
<R> <C><FC>"EAN-13"<FN></C> </R>
|
|
<R> <C><FC>"ISBN-13"<FN></C> </R>
|
|
<R> <C><FC>"I2/5"<FN></C> </R>
|
|
<R> <C><FC>"CODE-39"<FN></C> </R>
|
|
<R> <C><FC>"CODE-128"<FN></C> </R>
|
|
<R> <C><FC>"PDF417" (still not supported)<FN></C> </R>
|
|
<R> <C><FC>"QR-Code"<FN></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function getSymbolType(wantExceptions: bool32 = false): TIEVisionWString; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBarCodeSymbol.getData
|
|
|
|
<FM>Declaration<FC>
|
|
function getData(wantExceptions: bool32 = false): <A TIEVisionWString>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns decoded bar code symbols.
|
|
!!}
|
|
function getData(wantExceptions: bool32 = false): TIEVisionWString; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBarCodeSymbol.getBoundingBox
|
|
|
|
<FM>Declaration<FC>
|
|
function getBoundingBox(wantExceptions: bool32 = false): <A TIEVisionRect>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns decoded bar code bounding rectangle.
|
|
Bounding box could be not always available (i.e. for I2/5 bar code type).
|
|
!!}
|
|
function getBoundingBox(wantExceptions: bool32 = false): TIEVisionRect; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBarCodeSymbol.getXML
|
|
|
|
<FM>Declaration<FC>
|
|
function getXML(wantExceptions: bool32 = false): <A TIEVisionWString>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns decoded bar code info as XML string.
|
|
!!}
|
|
function getXML(wantExceptions: bool32 = false): TIEVisionWString; safecall;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionBarCodeScanner
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionBarCodeScanner = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to read bar codes (EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 and QR Code).
|
|
|
|
<FM>Demos<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\Barcode\Barcode.dpr </C> </R>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\BarCodeCam\BarCodeCam.dpr </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBarCodeScanner.scan></C> </R>
|
|
</TABLE>
|
|
|
|
<FM>See Also<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createBarCodeScanner></C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Examples<FC>
|
|
var
|
|
symbols: TIEVisionVectorObjRef;
|
|
s: TIEVisionBarCodeSymbol;
|
|
i: integer;
|
|
begin
|
|
symbols := IEVisionLib.createBarCodeScanner().scan(ImageEnView1.IEBitmap.GetIEVisionImage(), IEVisionRect(0, 0, 0, 0));
|
|
for i := 0 to symbols.size() - 1 do
|
|
begin
|
|
s := TIEVisionBarCodeSymbol( symbols.getObj(i) );
|
|
Memo1.Lines.Add('type = ' + s.getSymbolType().c_str());
|
|
Memo1.Lines.Add('data = ' + s.getData().c_str());
|
|
with s.getBoundingBox() do
|
|
Memo1.Lines.Add('rect = ' + inttostr(x) + ' ' + inttostr(y) + ' ' + inttostr(width) + ' ' + inttostr(height));
|
|
end;
|
|
end;
|
|
|
|
// Function to read a bar code from a file
|
|
function ReadBarcodeFromFile(const Filename : string): String;
|
|
var
|
|
IEBitmap: TIEBitmap;
|
|
begin
|
|
Result := '';
|
|
IEBitmap := TIEBitmap.Create;
|
|
try
|
|
IEBitmap.Read( Filename );
|
|
m_symbols := IEVisionLib.createBarCodeScanner().scan( IEBitmap.GetIEVisionImage(), IEVisionRect( 0, 0, 0, 0 ));
|
|
|
|
if m_symbols.size() > 0 then
|
|
Result := TIEVisionBarCodeSymbol( m_symbols.getObj( m_symbols.size() - 1 )).getData().c_str();
|
|
finally
|
|
IEBitmap.Free;
|
|
end;
|
|
end;
|
|
|
|
// Function to read a bar code from a bitmap
|
|
function ReadBarcodeFromBitmap(aBitmap: TBitmap): String;
|
|
var
|
|
IEBitmap: TIEBitmap;
|
|
begin
|
|
IEBitmap := TIEBitmap.Create( aBitmap, Rect( 0, 0, aBitmap.Width, aBitmap.Height ));
|
|
try
|
|
m_symbols := IEVisionLib.createBarCodeScanner().scan( IEBitmap.GetIEVisionImage(), IEVisionRect( 0, 0, 0, 0 ));
|
|
|
|
if m_symbols.size() > 0 then
|
|
Result := TIEVisionBarCodeSymbol( m_symbols.getObj( m_symbols.size() - 1 )).getData().c_str();
|
|
finally
|
|
IEBitmap.Free;
|
|
end;
|
|
end;
|
|
|
|
!!}
|
|
TIEVisionBarCodeScanner = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionBarCodeScanner.scan
|
|
|
|
<FM>Declaration<FC>
|
|
function scan(image: <A TIEVisionImage>; const rect: <A TIEVisionRect>; wantExceptions: bool32 = false): <A TIEVisionVectorObjRef>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Look for a scan code inside the specified image. Only 24 bit RGB and 8 bit gray scale images are supported.
|
|
Returns a list of symbols (bar codes) found as <A TIEVisionBarCodeSymbol> objects.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>image<FN></C> <C>Image where to search for barcodes.</C> </R>
|
|
<R> <C><FC>rect<FN></C> <C>Rectangle of the image where to search for. Setting (0, 0, 0, 0) means the whole image.</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
var
|
|
symbols: TIEVisionVectorObjRef;
|
|
s: TIEVisionBarCodeSymbol;
|
|
i: integer;
|
|
begin
|
|
symbols := IEVisionLib.createBarCodeScanner().scan(ImageEnView1.IEBitmap.GetIEVisionImage(), IEVisionRect(0, 0, 0, 0));
|
|
for i := 0 to symbols.size() - 1 do
|
|
begin
|
|
s := TIEVisionBarCodeSymbol( symbols.getObj(i) );
|
|
Memo1.Lines.Add('type = ' + s.getSymbolType().c_str());
|
|
Memo1.Lines.Add('data = ' + s.getData().c_str());
|
|
with s.getBoundingBox() do
|
|
Memo1.Lines.Add('rect = ' + inttostr(x) + ' ' + inttostr(y) + ' ' + inttostr(width) + ' ' + inttostr(height));
|
|
end;
|
|
end;
|
|
!!}
|
|
function scan(image: TIEVisionImage; const rect: TIEVisionRect; wantExceptions: bool32 = false): TIEVisionVectorObjRef; safecall;
|
|
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionStitcher
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionStitcher = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
Combines multiple photographic images with overlapping fields of view to produce a segmented panorama.
|
|
|
|
<FM>Demo<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\Stitcher\Stitcher.dpr </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionStitcher.stitch></C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
var
|
|
images: TIEVisionVectorImageRef;
|
|
pano: TIEVisionImage;
|
|
status: TIEVisionStitchingStatus;
|
|
begin
|
|
images := IEVisionLib.createVectorImageRef();
|
|
images.push_back(IEVisionLib.createImage('image1.jpg'));
|
|
images.push_back(IEVisionLib.createImage('image2.jpg'));
|
|
images.push_back(IEVisionLib.createImage('image3.jpg'));
|
|
|
|
pano := IEVisionLib.createStitcher().stitch(images, status);
|
|
|
|
if status = ievSSOK then
|
|
begin
|
|
ImageEnView.IEBitmap.AssignIEVisionImage(pano);
|
|
ImageEnView.Update;
|
|
end
|
|
end;
|
|
!!}
|
|
TIEVisionStitcher = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionStitcher.stitch
|
|
|
|
<FM>Declaration<FC>
|
|
function stitch(images: <A TIEVisionVectorImageRef>; out status: <A TIEVisionStitchingStatus>; wantExceptions: bool32 = false): <A TIEVisionImage>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Tries to stitch the given images.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>images<FN></C> <C> Input images. </C> </R>
|
|
<R> <C><FC>status<FN></C> <C> Status code. </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
var
|
|
images: TIEVisionVectorImageRef;
|
|
pano: TIEVisionImage;
|
|
status: TIEVisionStitchingStatus;
|
|
begin
|
|
images := IEVisionLib.createVectorImageRef();
|
|
images.push_back(IEVisionLib.createImage('image1.jpg'));
|
|
images.push_back(IEVisionLib.createImage('image2.jpg'));
|
|
images.push_back(IEVisionLib.createImage('image3.jpg'));
|
|
|
|
pano := IEVisionLib.createStitcher().stitch(images, status);
|
|
|
|
if status = ievSSOK then
|
|
begin
|
|
ImageEnView.IEBitmap.AssignIEVisionImage(pano);
|
|
ImageEnView.Update;
|
|
end
|
|
end;
|
|
!!}
|
|
function stitch(images: TIEVisionVectorImageRef; out status: TIEVisionStitchingStatus; wantExceptions: bool32 = false): TIEVisionImage; safecall;
|
|
|
|
end;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionBackgroundSubtractor
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionBackgroundSubtractor = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
Performs background/foreground segmentation.
|
|
|
|
<FM>Demo<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\BackgroundSubtract\BackgroundSubtract.dpr </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBackgroundSubtractor.apply></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBackgroundSubtractor.selectMethodMOG2></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionBackgroundSubtractor.selectMethodKNN></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionBackgroundSubtractor = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionBackgroundSubtractor.selectMethodMOG2
|
|
|
|
<FM>Declaration<FC>
|
|
procedure selectMethodMOG2(history: int32_t = 500; varThreshold: double = 16; detectShadows: bool32 = true; wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Selects Gaussian Mixture-based Background/Foreground Segmentation Algorithm.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> history <FN></C> <C> Length of the history. </C> </R>
|
|
<R> <C><FC> varThreshold <FN></C> <C> Threshold on the squared Mahalanobis distance between the pixel and the model to decide whether a pixel is well described by the background model. </C> </R>
|
|
<R> <C><FC> detectShadows <FN></C> <C> If true, the algorithm will detect shadows and mark them. </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure selectMethodMOG2(history: int32_t = 500; varThreshold: double = 16; detectShadows: bool32 = true; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBackgroundSubtractor.selectMethodKNN
|
|
|
|
<FM>Declaration<FC>
|
|
procedure selectMethodKNN(history: int32_t = 500; dist2Threshold: double = 400.0; detectShadows: bool32 = true; wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Selects K-nearest neigbours - based Background/Foreground Segmentation Algorithm.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> history <FN></C> <C> Length of the history. </C> </R>
|
|
<R> <C><FC> dist2Threshold <FN></C> <C> Threshold on the squared distance between the pixel and the sample to decide whether a pixel is close to that sample. </C> </R>
|
|
<R> <C><FC> detectShadows <FN></C> <C> If true, the algorithm will detect shadows and mark them. </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure selectMethodKNN(history: int32_t = 500; dist2Threshold: double = 400.0; detectShadows: bool32 = true; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionBackgroundSubtractor.apply
|
|
|
|
<FM>Declaration<FC>
|
|
function apply(image: <A TIEVisionImage>; learningRate: double = -1; wantExceptions: bool32 = false): <A TIEVisionImage>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Computes a foreground mask.
|
|
Returns the output foreground mask as an 8-bit binary image (ie8g).
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> image <FN></C> <C> Input image. </C> </R>
|
|
<R> <C><FC> learningRate <FN></C> <C> The value between 0 and 1 that indicates how fast the background model is learnt. </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function apply(image: TIEVisionImage; learningRate: double = -1; wantExceptions: bool32 = false): TIEVisionImage; safecall;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// TIEVisionFaceRecognizer
|
|
|
|
{!!
|
|
<FS>TIEVisionFaceRecognizer
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionFaceRecognizer = interface(TIEVisionBase)
|
|
|
|
<FM>Description<FN>
|
|
Performs face learning and recognition.
|
|
|
|
<FM>Demo<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_DEMO> <C>Demos\IEVision\FaceRecognizer\FaceRecognizer.dpr </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionFaceRecognizer.addTrainImage></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionFaceRecognizer.detect></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionFaceRecognizer.clear></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionFaceRecognizer.isTrained></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionFaceRecognizer.load></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionFaceRecognizer.save></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionFaceRecognizer.selectEigenFaceRecognizer></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionFaceRecognizer.selectFisherFaceRecognizer></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionFaceRecognizer.selectLBPHFaceRecognizer></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionFaceRecognizer.train></C> </R>
|
|
</TABLE>
|
|
!!}
|
|
TIEVisionFaceRecognizer = interface(TIEVisionBase)
|
|
|
|
{!!
|
|
<FS>TIEVisionFaceRecognizer.selectEigenFaceRecognizer
|
|
|
|
<FM>Declaration<FC>
|
|
procedure selectEigenFaceRecognizer(imageWidth: uint32_t = 100; imageHeight: uint32_t = 130; numComponents: int32_t = 0; wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Selects Eigen Face Recognizer as face recognizer algorithm.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> imageWidth <FN></C> <C> Width of training and test images. All training and test images will be resampled at this width. </C> </R>
|
|
<R> <C><FC> imageHeight <FN></C> <C> Height of training and test images. All traning and test images will be resampled at this height. </C> </R>
|
|
<R> <C><FC> numComponents <FN></C> <C> The number of components (Eigenfaces) kept as hint. </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure selectEigenFaceRecognizer(imageWidth: uint32_t = 100; imageHeight: uint32_t = 130; numComponents: int32_t = 0; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionFaceRecognizer.selectFisherFaceRecognizer
|
|
|
|
<FM>Declaration<FC>
|
|
procedure selectFisherFaceRecognizer(imageWidth: uint32_t = 100; imageHeight: uint32_t = 130; numComponents: int32_t = 0; wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Selects Fisher Face Recognizer as face recognizer algorithm.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> imageWidth <FN></C> <C> Width of training and test images. All training and test images will be resampled at this width. </C> </R>
|
|
<R> <C><FC> imageHeight <FN></C> <C> Height of training and test images. All traning and test images will be resampled at this height. </C> </R>
|
|
<R> <C><FC> numComponents <FN></C> <C> The number of components (Fisherfaces) kept. </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure selectFisherFaceRecognizer(imageWidth: uint32_t = 100; imageHeight: uint32_t = 130; numComponents: int32_t = 0; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionFaceRecognizer.selectLBPHFaceRecognizer
|
|
|
|
<FM>Declaration<FC>
|
|
procedure selectLBPHFaceRecognizer(radius: int32_t = 1; neighbors: int32_t = 8; grid_x: int32_t = 8; grid_y: int32_t = 8; wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Selects Local Binary Patterns Histograms (LBPH) Face Recognizer as face recognizer algorithm.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> radius <FN></C> <C> The radius used for building the Circular Local Binary Pattern. </C> </R>
|
|
<R> <C><FC> neighbors <FN></C> <C> The number of sample points to build a Circular Local Binary Pattern from. </C> </R>
|
|
<R> <C><FC> grid_x <FN></C> <C> The number of cells in the horizontal direction. </C> </R>
|
|
<R> <C><FC> grid_y <FN></C> <C> The number of cells in the vertical direction. </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure selectLBPHFaceRecognizer(radius: int32_t = 1; neighbors: int32_t = 8; grid_x: int32_t = 8; grid_y: int32_t = 8; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionFaceRecognizer.addTrainImage
|
|
|
|
<FM>Declaration<FC>
|
|
procedure addTrainImage(image: <A TIEVisionImage>; imlabel: PWideChar; wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Adds a new training image. Images pixel format can be RGB or gray scale. Images size don't care.
|
|
Applications need to call <A TIEVisionFaceRecognizer.train> after all training images are added.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> image <FN></C> <C> Input training image. </C> </R>
|
|
<R> <C><FC> imlabel <FN></C> <C> Label corresponding to the image. </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure addTrainImage(image: TIEVisionImage; imlabel: PWideChar; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionFaceRecognizer.clear
|
|
|
|
<FM>Declaration<FC>
|
|
procedure clear(wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Clears added training images, labels and recognizer state.
|
|
!!}
|
|
procedure clear(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionFaceRecognizer.isTrained
|
|
|
|
<FM>Declaration<FC>
|
|
function isTrained(wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if the object is trained.
|
|
!!}
|
|
function isTrained(wantExceptions: bool32 = false): bool32; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionFaceRecognizer.train
|
|
|
|
<FM>Declaration<FC>
|
|
procedure train(update: bool32 = false; wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Starts face recognition training.
|
|
Applications need to call <A TIEVisionFaceRecognizer.addTrainImage> before.
|
|
At the end it is possible to call <A TIEVisionFaceRecognizer.detect> or <A TIEVisionFaceRecognizer.save>.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> update <FN></C> <C> If true and if supported by the algorithm this updates instead of re-train the recognizer. </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
procedure train(update: bool32 = false; wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionFaceRecognizer.detect
|
|
|
|
<FM>Declaration<FC>
|
|
function detect(image: TIEVisionImage; out confidence: double; wantExceptions: bool32 = false): PWideChar; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Detects a label and associated confidence (e.g. distance) for a given input image.
|
|
Applications can call this method after <A TIEVisionFaceRecognizer.train> or <A TIEVisionFaceRecognizer.load>.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> image <FN></C> <C> Input test image. </C> </R>
|
|
<R> <C><FC> confidence <FN></C> <C> Associated confidence (e.g. distance) for the predicted label. </C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function detect(image: TIEVisionImage; out confidence: double; wantExceptions: bool32 = false): PWideChar; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionFaceRecognizer.save
|
|
|
|
<FM>Declaration<FC>
|
|
procedure save(stream: IStream; wantExceptions: bool32 = false); safecall;
|
|
procedure save(filename: PWideChar; wantExceptions: bool32 = false); safecall;
|
|
|
|
<FM>Description<FN>
|
|
Saves current face recognizer state.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> stream <FN></C> <C> Output stream. </C> </R>
|
|
<R> <C><FC> filename <FN></C> <C> Output file name. </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
var fs: TFileStream;
|
|
...
|
|
fs := TFileStream.Create('trained.dat', fmCreate);
|
|
fr.save(TStreamAdapter.Create(fs) as IStream);
|
|
fs.free;
|
|
!!}
|
|
procedure save(stream: IStream; wantExceptions: bool32 = false); safecall; overload;
|
|
procedure save(filename: PWideChar; wantExceptions: bool32 = false); safecall; overload;
|
|
|
|
{!!
|
|
<FS>TIEVisionFaceRecognizer.load
|
|
|
|
<FM>Declaration<FC>
|
|
procedure load(stream: IStream; wantExceptions: bool32 = false); safecall;
|
|
procedure load(filename: PWideChar; wantExceptions: bool32 = false); safecall; overload;
|
|
|
|
<FM>Description<FN>
|
|
Loads face recognizer state.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC> stream <FN></C> <C> Input stream. </C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
var fs: TFileStream;
|
|
...
|
|
fs := TFileStream.Create('trained.dat', fmOpenRead);
|
|
fr.load(TStreamAdapter.Create(fs) as IStream);
|
|
fs.Free;
|
|
!!}
|
|
procedure load(stream: IStream; wantExceptions: bool32 = false); safecall; overload;
|
|
procedure load(filename: PWideChar; wantExceptions: bool32 = false); safecall; overload;
|
|
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary
|
|
|
|
<FM>Declaration<FC>
|
|
TIEVisionLibrary = interface(<A TIEVisionBase>)
|
|
|
|
<FM>Description<FN>
|
|
This interface allows you to create IEVision objects.
|
|
|
|
<FM>Methods and Properties<FN>
|
|
<TABLE2>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createBarCodeScanner></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createBackgroundSubtractor></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createCascadeClassifier></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createDrawing></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createExistingMemoryStream></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createFaceRecognizer></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createFileStream></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createHaarTraining></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createHistogram></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createImage></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createInputOutput></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createMath></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createMemoryImageList></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createMemorySharedImageList></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createMemoryStream></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createObjectsFinder></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createObjectTracker></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createOCR></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createPeopleDetector></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createPropertyTree></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createString></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createWString></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createStitcher></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createTempDirName></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createTempFileImageList></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createTempFileName></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createTempFileStream></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createVectorByte></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createVectorDouble></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createVectorFloatPair></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createVectorImageRef></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createVectorInt32></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createVectorPoint></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createVectorRect></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.createVectorString></C> </R>
|
|
<R> <C_IMG_METHOD> <C><A TIEVisionLibrary.getLibraryInfo></C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
image := IEVisionLib.createImage(1000, 1000, ievUINT8, 3);
|
|
!!}
|
|
TIEVisionLibrary = interface(TIEVisionBase)
|
|
procedure debug(wantExceptions: bool32 = false); safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createHaarTraining
|
|
|
|
<FM>Declaration<FC>
|
|
function createHaarTraining(): <A TIEVisionHaarTraining>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a new Haar training object.
|
|
!!}
|
|
function createHaarTraining(wantExceptions: bool32 = false): TIEVisionHaarTraining; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createInputOutput
|
|
|
|
<FM>Declaration<FC>
|
|
function createInputOutput(): <A TIEVisionInputOutput>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a new input/output object.
|
|
!!}
|
|
function createInputOutput(wantExceptions: bool32 = false): TIEVisionInputOutput; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createMath
|
|
|
|
<FM>Declaration<FC>
|
|
function createMath(): <A TIEVisionMath>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a new math object.
|
|
!!}
|
|
function createMath(wantExceptions: bool32 = false): TIEVisionMath; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createDrawing
|
|
|
|
<FM>Declaration<FC>
|
|
function createDrawing(): <A TIEVisionDrawing>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a new drawing object.
|
|
!!}
|
|
function createDrawing(wantExceptions: bool32 = false): TIEVisionDrawing; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createImage
|
|
|
|
<FM>Declaration<FC>
|
|
function createImage(width: int32_t; height: int32_t; channelFormat: <A TIEVisionChannelFormat>; channels: int32_t): <A TIEVisionImage>; overload; safecall;
|
|
function createImage(c: <A TIEVisionImage>): <A TIEVisionImage>; overload; safecall;
|
|
function createImage(): <A TIEVisionImage>; overload; safecall;
|
|
function createImage(width: int32_t; height: int32_t; channelFormat: <A TIEVisionChannelFormat>; channels: int32_t; rowlen: int32_t; data: pointer): <A TIEVisionImage>; overload; safecall;
|
|
function createImage(filename: PAnsiChar): <A TIEVisionImage>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
First overload creates a new image object from specified sizes and format.
|
|
Second overload creates a new image object from a copy of specified object.
|
|
Third overload creates a new empty image object.
|
|
Fourth overload creates a new image from the specified buffer (shares the same content). The buffer will be not released on destroy.
|
|
Fifth overload creates a new image from the specified file. Currently supported file formats are: TIFF, JPEG, BMP, PNG, PXM, J2K (jpeg2000), RAS.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>width<FN></C> <C>Image width.</C> </R>
|
|
<R> <C><FC>height<FN></C> <C>Image height.</C> </R>
|
|
<R> <C><FC>channelFormat<FN></C> <C>Channel format.</C> </R>
|
|
<R> <C><FC>channels<FN></C> <C>Number of channels.</C> </R>
|
|
<R> <C><FC>c<FN></C> <C>Source image to copy.</C> </R>
|
|
<R> <C><FC>rowlen<FN></C> <C>Row length in bytes.</C> </R>
|
|
<R> <C><FC>data<FN></C> <C>Raw data buffer.</C> </R>
|
|
<R> <C><FC>filename<FN></C> <C>Filename to load.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// create 1000x1000 RGB image
|
|
image := IEVisionLib.createImage(1000, 1000, ievUINT8, 3);
|
|
|
|
// load 'input.jpg'
|
|
image := IEVisionLib.createImage('input.jpeg');
|
|
|
|
// share ImageEnView1 bitmap
|
|
ImageEnView1.IEBitmap.Origin := ieboTOPLEFT;
|
|
image := IEVisionLib.createImage(ImageEnView1.IEBitmap.Width, ImageEnView1.IEBitmap.Height,
|
|
ievUINT8, 3, ImageEnView1.IEBitmap.Rowlen,
|
|
ImageEnView1.IEBitmap.ScanLine[0]);
|
|
|
|
// the same result of previous code
|
|
image := ImageEnView1.IEBitmap.GetIEVisionImage();
|
|
!!}
|
|
function createImage(width: int32_t; height: int32_t; channelFormat: TIEVisionChannelFormat; channels: int32_t; wantExceptions: bool32 = false): TIEVisionImage; overload; safecall;
|
|
function createImage(c: TIEVisionImage; wantExceptions: bool32 = false): TIEVisionImage; overload; safecall;
|
|
function createImage(wantExceptions: bool32 = false): TIEVisionImage; overload; safecall;
|
|
function createImage(width: int32_t; height: int32_t; channelFormat: TIEVisionChannelFormat; channels: int32_t; rowlen: int32_t; data: pointer; wantExceptions: bool32 = false): TIEVisionImage; overload; safecall;
|
|
function createImage(filename: PAnsiChar; wantExceptions: bool32 = false): TIEVisionImage; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createCascadeClassifier
|
|
|
|
<FM>Declaration<FC>
|
|
function createCascadeClassifier(): <A TIEVisionCascadeClassifier>; overload; safecall;
|
|
function createCascadeClassifier(c: <A TIEVisionCascadeClassifier>): <A TIEVisionCascadeClassifier>; overload; safecall;
|
|
function createCascadeClassifier(filename: PAnsiChar): <A TIEVisionCascadeClassifier>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
First overload creates a new empty cascade classifier.
|
|
Second overload creates a cascade classifier from a copy of specified object.
|
|
Third overload creates a cascade classifier from file or embedded classifier. Embedded classifiers have ':' prefix and can be:
|
|
<TABLE>
|
|
<R> <H>Const</H> <H>Classifier</H> </R>
|
|
<R> <C><FC>IEVC_EYE <FN></C> <C>":EYE"</C>
|
|
<R> <C><FC>IEVC_EYE_TREE_EYE_GLASSES<FN></C> <C>":EYETREEEYEGLASSES"</C>
|
|
<R> <C><FC>IEVC_FRONTAL_FACE_ALT <FN></C> <C>":FRONTALFACEALT"</C>
|
|
<R> <C><FC>IEVC_FRONTAL_FACE_ALT_2 <FN></C> <C>":FRONTALFACEALT2"</C>
|
|
<R> <C><FC>IEVC_FRONTAL_FACE_ALT_TREE <FN></C> <C>":FRONTALFACEALTTREE"</C>
|
|
<R> <C><FC>IEVC_FRONTAL_FACE_DEFAULT<FN></C> <C>":FRONTALFACEDEFAULT"</C>
|
|
<R> <C><FC>IEVC_FULL_BODY <FN></C> <C>":FULLBODY"</C>
|
|
<R> <C><FC>IEVC_LOWER_BODY<FN></C> <C>":LOWERBODY"</C>
|
|
<R> <C><FC>IEVC_PROFILE_FACE <FN></C> <C>":PROFILEFACE"</C>
|
|
<R> <C><FC>IEVC_UPPER_BODY<FN></C> <C>":UPPERBODY"</C>
|
|
<R> <C><FC>IEVC_LEFT_EYE_2_SPLITS <FN></C> <C>":LEFTEYE2SPLITS"</C>
|
|
<R> <C><FC>IEVC_RIGHT_EYE_2_SPLITS <FN></C> <C>":RIGHTEYE2SPLITS"</C>
|
|
<R> <C><FC>IEVC_LBP_FRONTAL_FACE <FN></C> <C>":LBPFRONTALFACE"</C>
|
|
<R> <C><FC>IEVC_CASCADE_SMILE <FN></C> <C>":CASCADESMILE"</C>
|
|
<R> <C><FC>IEVC_FRONTAL_CAT_FACE <FN></C> <C>":FRONTALCATFACE"</C>
|
|
<R> <C><FC>IEVC_FRONTAL_CAT_FACE_EXT <FN></C> <C>":FRONTALCATFACEEXTENDED"</C>
|
|
<R> <C><FC>IEVC_LICENSE_PLATE_RUS <FN></C> <C>":LICENSEPLATERUS"</C>
|
|
<R> <C><FC>IEVC_RUSSIAN_PLATE_NUMBER <FN></C> <C>":RUSSIANPLATENUMBER"</C>
|
|
</R>
|
|
</TABLE>
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>c<FN></C> <C>Source classifier to copy.</C> </R>
|
|
<R> <C><FC>filename<FN></C> <C>Filename of classifier to load (or one of the <L IEVision Embedded Classifiers>embedded classifiers</L>).</C> </R>
|
|
</TABLE>
|
|
|
|
<FM>Example<FC>
|
|
// load embedded eye detector
|
|
classifier := IEVisionLib.createCascadeClassifier(IEVC_EYE);
|
|
|
|
<FM>See Also<FN>
|
|
- <A IEVision Embedded Classifiers>
|
|
!!}
|
|
function createCascadeClassifier(wantExceptions: bool32 = false): TIEVisionCascadeClassifier; overload; safecall;
|
|
function createCascadeClassifier(c: TIEVisionCascadeClassifier; wantExceptions: bool32 = false): TIEVisionCascadeClassifier; overload; safecall;
|
|
function createCascadeClassifier(filename: PAnsiChar; wantExceptions: bool32 = false): TIEVisionCascadeClassifier; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createFileStream
|
|
|
|
<FM>Declaration<FC>
|
|
function createFileStream(filename: PAnsiChar; mode: <A TIEVisionFileStreamMode>): <A TIEVisionFileStream>; overload; safecall;
|
|
function createFileStream(filename: PWideChar; mode: <A TIEVisionFileStreamMode>): <A TIEVisionFileStream>; overload; safecall;
|
|
function createFileStream(): <A TIEVisionFileStream>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
First two overloads create a file stream using specified mode.
|
|
Third overload create an unopened file stream.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>filename<FN></C> <C>ANSI or Unicode file name.</C> </R>
|
|
<R> <C><FC>mode<FN></C> <C>File mode.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
// open "input.dat" as readonly file
|
|
filestream := createFileStream('input.dat', ievREAD);
|
|
|
|
// create "output.dat"
|
|
filestream := createFileStream('output.dat', ievCREATE);
|
|
|
|
// open "input.dat" as readonly file
|
|
filestream := createFileStream();
|
|
filestream.open('input.dat', ievREAD);
|
|
!!}
|
|
function createFileStream(filename: PAnsiChar; mode: TIEVisionFileStreamMode; wantExceptions: bool32 = false): TIEVisionFileStream; overload; safecall;
|
|
function createFileStream(filename: PWideChar; mode: TIEVisionFileStreamMode; wantExceptions: bool32 = false): TIEVisionFileStream; overload; safecall;
|
|
function createFileStream(wantExceptions: bool32 = false): TIEVisionFileStream; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createMemoryStream
|
|
|
|
<FM>Declaration<FC>
|
|
function createMemoryStream(): <A TIEVisionMemoryStream>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a memory stream.
|
|
!!}
|
|
function createMemoryStream(wantExceptions: bool32 = false): TIEVisionMemoryStream; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createExistingMemoryStream
|
|
|
|
<FM>Declaration<FC>
|
|
function createExistingMemoryStream(existingBuffer: pointer; existingBufferSize: int32_t): <A TIEVisionExistingMemoryStream>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a readonly memory stream from an existing buffer.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>existingBuffer<FN></C> <C>Pointer to the existing buffer.</C> </R>
|
|
<R> <C><FC>existingBufferSize<FN></C> <C>Size of the existing buffer.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createExistingMemoryStream(existingBuffer: pointer; existingBufferSize: int32_t; wantExceptions: bool32 = false): TIEVisionExistingMemoryStream; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createTempFileStream
|
|
|
|
<FM>Declaration<FC>
|
|
function createTempFileStream(deleteOnDestroy: bool32 = true): <A TIEVisionTempFileStream>; overload; safecall;
|
|
function createTempFileStream(filename: PAnsiChar; deleteOnDestroy: bool32 = true): <A TIEVisionTempFileStream>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a temporary file stream.
|
|
First overload choices automatically the file name.
|
|
Second overload allows you to set a custom file name.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>deleteOnDestroy<FN></C> <C>If true the file will be delete on object disposing.</C> </R>
|
|
<R> <C><FC>filename<FN></C> <C>Filename of temporary file.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createTempFileStream(deleteOnDestroy: bool32 = true; wantExceptions: bool32 = false): TIEVisionTempFileStream; overload; safecall;
|
|
function createTempFileStream(filename: PAnsiChar; deleteOnDestroy: bool32 = true; wantExceptions: bool32 = false): TIEVisionTempFileStream; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createMemoryImageList
|
|
|
|
<FM>Declaration<FC>
|
|
function createMemoryImageList(): <A TIEVisionMemoryImageList>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a memory image list.
|
|
!!}
|
|
function createMemoryImageList(wantExceptions: bool32 = false): TIEVisionMemoryImageList; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createMemorySharedImageList
|
|
|
|
<FM>Declaration<FC>
|
|
function createMemorySharedImageList(): <A TIEVisionMemorySharedImageList>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a shared image list.
|
|
!!}
|
|
function createMemorySharedImageList(wantExceptions: bool32 = false): TIEVisionMemorySharedImageList; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createTempFileImageList
|
|
|
|
<FM>Declaration<FC>
|
|
function createTempFileImageList(): <A TIEVisionTempFileImageList>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a temporary file image list.
|
|
!!}
|
|
function createTempFileImageList(wantExceptions: bool32 = false): TIEVisionTempFileImageList; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createString
|
|
|
|
<FM>Declaration<FC>
|
|
function createString(): <A TIEVisionString>; overload; safecall;
|
|
function createString(src: <A TIEVisionString>): <A TIEVisionString>; overload; safecall;
|
|
function createString(src: PAnsiChar): <A TIEVisionString>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates an ANSI string object.
|
|
First overload creates an empty string.
|
|
Second overload creates a clone of source string object.
|
|
Third overload creates a string from the specified ANSI string.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>String object or ANSI string pointer to copy.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createString(wantExceptions: bool32 = false): TIEVisionString; overload; safecall;
|
|
function createString(src: TIEVisionString; wantExceptions: bool32 = false): TIEVisionString; overload; safecall;
|
|
function createString(src: PAnsiChar; wantExceptions: bool32 = false): TIEVisionString; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createWString
|
|
|
|
<FM>Declaration<FC>
|
|
function createWString(): <A TIEVisionWString>; overload; safecall;
|
|
function createWString(src: <A TIEVisionWString>): <A TIEVisionWString>; overload; safecall;
|
|
function createWString(src: PWideChar): <A TIEVisionWString>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a wide string object.
|
|
First overload creates an empty string.
|
|
Second overload creates a clone of source string object.
|
|
Third overload creates a string from the specified wide string.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>String object or wide string pointer to copy.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createWString(wantExceptions: bool32 = false): TIEVisionWString; overload; safecall;
|
|
function createWString(src: TIEVisionWString; wantExceptions: bool32 = false): TIEVisionWString; overload; safecall;
|
|
function createWString(src: PWideChar; wantExceptions: bool32 = false): TIEVisionWString; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createVectorString
|
|
|
|
<FM>Declaration<FC>
|
|
function createVectorString(): <A TIEVisionVectorString>; overload; safecall;
|
|
function createVectorString(src: <A TIEVisionVectorString>): <A TIEVisionVectorString>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a vector of strings.
|
|
Second overload creates a clone of specified vector of strings.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Vector to clone.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createVectorString(wantExceptions: bool32 = false): TIEVisionVectorString; overload; safecall;
|
|
function createVectorString(src: TIEVisionVectorString; wantExceptions: bool32 = false): TIEVisionVectorString; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createPropertyTree
|
|
|
|
<FM>Declaration<FC>
|
|
function createPropertyTree(): <A TIEVisionPropertyTree>; overload; safecall;
|
|
function createPropertyTree(src: <A TIEVisionPropertyTree>): <A TIEVisionPropertyTree>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a property tree object.
|
|
Second overload creates a copy of specified property tree object.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Property tree to copy.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createPropertyTree(wantExceptions: bool32 = false): TIEVisionPropertyTree; overload; safecall;
|
|
function createPropertyTree(src: TIEVisionPropertyTree; wantExceptions: bool32 = false): TIEVisionPropertyTree; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createTempFileName
|
|
|
|
<FM>Declaration<FC>
|
|
function createTempFileName(deleteOnDestroy: bool32 = true): <A TIEVisionTempFileName>; overload; safecall;
|
|
function createTempFileName(filename: PAnsiChar; deleteOnDestroy: bool32 = true): <A TIEVisionTempFileName>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a temporary file name.
|
|
Second overload allows you to specify the file name.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>deleteOnDestroy<FN></C> <C>Automatically delete the file on object destroy.</C> </R>
|
|
<R> <C><FC>filename<FN></C> <C>Specify filename manually.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createTempFileName(deleteOnDestroy: bool32 = true; wantExceptions: bool32 = false): TIEVisionTempFileName; overload; safecall;
|
|
function createTempFileName(filename: PAnsiChar; deleteOnDestroy: bool32 = true; wantExceptions: bool32 = false): TIEVisionTempFileName; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createTempDirName
|
|
|
|
<FM>Declaration<FC>
|
|
function createTempDirName(deleteOnDestroy: bool32 = true): <A TIEVisionTempDirName>; overload; safecall;
|
|
function createTempDirName(dirname: PAnsiChar; deleteOnDestroy: bool32 = true): <A TIEVisionTempDirName>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a temporary directory name.
|
|
Second overload allows you to specify the directory name.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>deleteOnDestroy<FN></C> <C>Automatically delete the directory on object destroy.</C> </R>
|
|
<R> <C><FC>dirname<FN></C> <C>Specify dirname manually.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createTempDirName(deleteOnDestroy: bool32 = true; wantExceptions: bool32 = false): TIEVisionTempDirName; overload; safecall;
|
|
function createTempDirName(dirname: PAnsiChar; deleteOnDestroy: bool32 = true; wantExceptions: bool32 = false): TIEVisionTempDirName; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createHistogram
|
|
|
|
<FM>Declaration<FC>
|
|
function createHistogram(sizes: <A TIEVisionVectorInt32>; histType: <A TIEVisionHistogramType>; ranges: <A TIEVisionVectorFloatPair>; uniform: bool32 = true): <A TIEVisionHistogram>; overload; safecall;
|
|
function createHistogram(bins: int32_t = 256; histType: <A TIEVisionHistogramType> = ievARRAY; rangeMin: single = 0.0; rangeMax: single = 255.0; uniform: bool32 = true): <A TIEVisionHistogram>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates an empty histogram object.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>sizes<FN></C> <C>Number of histogram sizes.</C> </R>
|
|
<R> <C><FC>histType<FN></C> <C>Histogram type.</C> </R>
|
|
<R> <C><FC>ranges<FN></C> <C>Vector of ranges (for each size).</C> </R>
|
|
<R> <C><FC>uniform<FN></C> <C>Uniform histogram.</C> </R>
|
|
<R> <C><FC>bins<FN></C> <C>Number of bins.</C> </R>
|
|
<R> <C><FC>rangeMin<FN></C> <C>Range start.</C> </R>
|
|
<R> <C><FC>rangeMax<FN></C> <C>Range end.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createHistogram(sizes: TIEVisionVectorInt32; histType: TIEVisionHistogramType; ranges: TIEVisionVectorFloatPair; uniform: bool32 = true; wantExceptions: bool32 = false): TIEVisionHistogram; overload; safecall;
|
|
function createHistogram(bins: int32_t = 256; histType: TIEVisionHistogramType = ievARRAY; rangeMin: single = 0.0; rangeMax: single = 255.0; uniform: bool32 = true; wantExceptions: bool32 = false): TIEVisionHistogram; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createVectorInt32
|
|
|
|
<FM>Declaration<FC>
|
|
function createVectorInt32(): <A TIEVisionVectorInt32>; overload; safecall;
|
|
function createVectorInt32(src: <A TIEVisionVectorInt32>): <A TIEVisionVectorInt32>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a vector of integers (signed 32 bit).
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Vector to copy.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createVectorInt32(wantExceptions: bool32 = false): TIEVisionVectorInt32; overload; safecall;
|
|
function createVectorInt32(src: TIEVisionVectorInt32; wantExceptions: bool32 = false): TIEVisionVectorInt32; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createVectorFloatPair
|
|
|
|
<FM>Declaration<FC>
|
|
function createVectorFloatPair(): <A TIEVisionVectorFloatPair>; overload; safecall;
|
|
function createVectorFloatPair(src: <A TIEVisionVectorFloatPair>): <A TIEVisionVectorFloatPair>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a vector of float pairs (two 32 bit floating point values).
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Vector to copy.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createVectorFloatPair(wantExceptions: bool32 = false): TIEVisionVectorFloatPair; overload; safecall;
|
|
function createVectorFloatPair(src: TIEVisionVectorFloatPair; wantExceptions: bool32 = false): TIEVisionVectorFloatPair; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createVectorPoint
|
|
|
|
<FM>Declaration<FC>
|
|
function createVectorPoint(): <A TIEVisionVectorPoint>; overload; safecall;
|
|
function createVectorPoint(src: <A TIEVisionVectorPoint>): <A TIEVisionVectorPoint>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a vector of points.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Vector to copy.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createVectorPoint(wantExceptions: bool32 = false): TIEVisionVectorPoint; overload; safecall;
|
|
function createVectorPoint(src: TIEVisionVectorPoint; wantExceptions: bool32 = false): TIEVisionVectorPoint; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createVectorRect
|
|
|
|
<FM>Declaration<FC>
|
|
function createVectorRect(): <A TIEVisionVectorRect>; overload; safecall;
|
|
function createVectorRect(src: <A TIEVisionVectorRect>): <A TIEVisionVectorRect>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a vector of rectangles.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Vector to copy.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createVectorRect(wantExceptions: bool32 = false): TIEVisionVectorRect; overload; safecall;
|
|
function createVectorRect(src: TIEVisionVectorRect; wantExceptions: bool32 = false): TIEVisionVectorRect; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createVectorByte
|
|
|
|
<FM>Declaration<FC>
|
|
function createVectorByte(): <A TIEVisionVectorByte>; overload; safecall;
|
|
function createVectorByte(src: <A TIEVisionVectorByte>): <A TIEVisionVectorByte>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a vector of bytes (8 bit unsigned).
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Vector to copy.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createVectorByte(wantExceptions: bool32 = false): TIEVisionVectorByte; overload; safecall;
|
|
function createVectorByte(src: TIEVisionVectorByte; wantExceptions: bool32 = false): TIEVisionVectorByte; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createVectorDouble
|
|
|
|
<FM>Declaration<FC>
|
|
function createVectorDouble(): <A TIEVisionVectorDouble>; overload; safecall;
|
|
function createVectorDouble(src: <A TIEVisionVectorDouble>): <A TIEVisionVectorDouble>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a vector of floating point values (64 bit).
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Vector to copy.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createVectorDouble(wantExceptions: bool32 = false): TIEVisionVectorDouble; overload; safecall;
|
|
function createVectorDouble(src: TIEVisionVectorDouble; wantExceptions: bool32 = false): TIEVisionVectorDouble; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createVectorImageRef
|
|
|
|
<FM>Declaration<FC>
|
|
function createVectorImageRef(): <A TIEVisionVectorImageRef>; overload; safecall;
|
|
function createVectorImageRef(src: <A TIEVisionVectorImageRef>): <A TIEVisionVectorImageRef>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a vector of <A TIEVisionImage> references.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>src<FN></C> <C>Vector to copy.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function createVectorImageRef(wantExceptions: bool32 = false): TIEVisionVectorImageRef; overload; safecall;
|
|
function createVectorImageRef(src: TIEVisionVectorImageRef; wantExceptions: bool32 = false): TIEVisionVectorImageRef; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createObjectTracker
|
|
|
|
<FM>Declaration<FC>
|
|
function createObjectTracker(): <A TIEVisionObjectTracker>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates an object tracker.
|
|
!!}
|
|
function createObjectTracker(wantExceptions: bool32 = false): TIEVisionObjectTracker; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createObjectsFinder
|
|
|
|
<FM>Declaration<FC>
|
|
function createObjectsFinder(): <A TIEVisionObjectsFinder>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates an object finder.
|
|
!!}
|
|
function createObjectsFinder(wantExceptions: bool32 = false): TIEVisionObjectsFinder; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createOCR
|
|
|
|
<FM>Declaration<FC>
|
|
function createOCR(language: PAnsiChar = nil; engine: <A TIEVisionOCREngine> = ievOCRFAST): <A TIEVisionOCR>; overload; safecall;
|
|
function createOCR(path: PAnsiChar; language: PAnsiChar; engine: <A TIEVisionOCREngine> = ievOCRFAST): <A TIEVisionOCR>; overload; safecall;
|
|
function createOCR(path: PAnsiChar; languages: <A TIEVisionVectorString>; engine: <A TIEVisionOCREngine> = ievOCRFAST): <A TIEVisionOCR>; overload; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates an OCR object for the specified language.
|
|
<L TIEVisionLanguages>Many languages</L> are available as separate files.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>language<FN></C> <C>Language code of OCR recognition (ex. 'eng', 'fra').</C> </R>
|
|
<R> <C><FC>path<FN></C> <C>Path to language data files.</C> </R>
|
|
<R> <C><FC>engine<FN></C> <C>OCR engine to use.</C> </R>
|
|
<R> <C><FC>languages<FN></C> <C>A list of languages.</C> </R>
|
|
</TABLE>
|
|
|
|
|
|
<FM>Example<FC>
|
|
OCR := IEVisionLib.createOCR(IEOCRLanguageList[OCR_English_language].Code);
|
|
|
|
OR
|
|
|
|
sLanguage := 'fra'; // French
|
|
if FileExists( IncludeTrailingPathDelimiter( ExtractFilePath( Application.ExeName )) + sLanguage + '.traineddata' ) = False then
|
|
raise Exception.create( 'Language file not found' );
|
|
OCR := IEVisionLib.createOCR( sLanguage );
|
|
|
|
OR (multiple languages)
|
|
|
|
var langs: TIEVisionVectorString;
|
|
langs := IEVisionLib.createVectorString();
|
|
langs.push_back( IEOCRLanguageList[ OCR_English_language ].Code ); // load English
|
|
langs.push_back( IEOCRLanguageList[ OCR_Italian_language ].Code ); // load Italian
|
|
m_OCR := IEVisionLib.createOCR( '', langs, TIEVisionOCREngine( ComboBox1.ItemIndex ));
|
|
!!}
|
|
function createOCR(language: PAnsiChar = nil; engine: TIEVisionOCREngine = ievOCRFAST; wantExceptions: bool32 = false): TIEVisionOCR; overload; safecall;
|
|
function createOCR(path: PAnsiChar; language: PAnsiChar; engine: TIEVisionOCREngine = ievOCRFAST; wantExceptions: bool32 = false): TIEVisionOCR; overload; safecall;
|
|
function createOCR(path: PAnsiChar; languages: TIEVisionVectorString; engine: TIEVisionOCREngine = ievOCRFAST; wantExceptions: bool32 = false): TIEVisionOCR; overload; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createPeopleDetector
|
|
|
|
<FM>Declaration<FC>
|
|
function createPeopleDetector(wantExceptions: bool32 = false): <A TIEVisionPeopleDetector>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a People Detector object.
|
|
|
|
|
|
<FM>Example<FC>
|
|
objectsFinder := IEVisionLib.createObjectsFinder();
|
|
objectsFinder.addClassifier('People Detector', IEVisionLib.createPeopleDetector());
|
|
!!}
|
|
function createPeopleDetector(wantExceptions: bool32 = false): TIEVisionPeopleDetector; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createBarCodeScanner
|
|
|
|
<FM>Declaration<FC>
|
|
function createBarCodeScanner(wantExceptions: bool32 = false): <A TIEVisionBarCodeScanner>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a bar code scanner object.
|
|
|
|
|
|
<FM>Example<FC>
|
|
var
|
|
symbols: TIEVisionVectorObjRef;
|
|
s: TIEVisionBarCodeSymbol;
|
|
i: integer;
|
|
begin
|
|
symbols := IEVisionLib.createBarCodeScanner().scan(ImageEnView1.IEBitmap.GetIEVisionImage(), IEVisionRect(0, 0, 0, 0));
|
|
for i := 0 to symbols.size() - 1 do
|
|
begin
|
|
s := TIEVisionBarCodeSymbol( symbols.getObj(i) );
|
|
Memo1.Lines.Add('type = ' + s.getSymbolType().c_str());
|
|
Memo1.Lines.Add('data = ' + s.getData().c_str());
|
|
with s.getBoundingBox() do
|
|
Memo1.Lines.Add('rect = ' + inttostr(x) + ' ' + inttostr(y) + ' ' + inttostr(width) + ' ' + inttostr(height));
|
|
end;
|
|
end;
|
|
!!}
|
|
function createBarCodeScanner(wantExceptions: bool32 = false): TIEVisionBarCodeScanner; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.getLibraryInfo
|
|
|
|
<FM>Declaration<FC>
|
|
function getLibraryInfo(info: <A TIEVisionLibraryInfo>; wantExceptions: bool32 = false): <A TIEVisionString>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Returns some library infos (version, platform, etc).
|
|
|
|
|
|
<FM>Example<FC>
|
|
ShowMessage( Format('%s %s %s bit (filename: "%s", is trial: %s)', [
|
|
IEVisionLib().getLibraryInfo(ievLIBNAME).c_str(),
|
|
IEVisionLib().getLibraryInfo(ievLIBVERSION).c_str(),
|
|
IEVisionLib().getLibraryInfo(ievLIBPLATFORM).c_str(),
|
|
IEVisionLib().getLibraryInfo(ievLIBFILENAME).c_str(),
|
|
IEVisionLib().getLibraryInfo(ievISTRIAL).c_str()]) );
|
|
!!}
|
|
function getLibraryInfo(info: TIEVisionLibraryInfo; wantExceptions: bool32 = false): TIEVisionString; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createStitcher
|
|
|
|
<FM>Declaration<FC>
|
|
function createStitcher(tryUseGPU: bool32 = false; wantExceptions: bool32 = false): <A TIEVisionStitcher>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a stitcher object.
|
|
!!}
|
|
function createStitcher(tryUseGPU: bool32 = false; wantExceptions: bool32 = false): TIEVisionStitcher; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createBackgroundSubtractor
|
|
|
|
<FM>Declaration<FC>
|
|
function createBackgroundSubtractor(wantExceptions: bool32 = false): <A TIEVisionBackgroundSubtractor>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a background subtractor object.
|
|
!!}
|
|
function createBackgroundSubtractor(wantExceptions: bool32 = false): TIEVisionBackgroundSubtractor; safecall;
|
|
|
|
{!!
|
|
<FS>TIEVisionLibrary.createFaceRecognizer
|
|
|
|
<FM>Declaration<FC>
|
|
function createFaceRecognizer(wantExceptions: bool32 = false): <A TIEVisionFaceRecognizer>; safecall;
|
|
|
|
<FM>Description<FN>
|
|
Creates a face recognizer object.
|
|
!!}
|
|
function createFaceRecognizer(wantExceptions: bool32 = false): TIEVisionFaceRecognizer; safecall;
|
|
|
|
end;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
procedure IEInitialize_ievision(const sDLLPath: WideString = ''; reinitialize: boolean = true);
|
|
procedure IEFinalize_ievision();
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
{!!
|
|
<FS>IEVisionAvailable
|
|
|
|
<FM>Declaration<FC>
|
|
function IEVisionAvailable(): boolean;
|
|
|
|
<FM>Description<FN>
|
|
Checks if the ievision.dll is available. When it returns true you can use any IEVision function and class.
|
|
|
|
<FM>Example<FC>
|
|
if not IEVisionAvailable() then
|
|
begin
|
|
ShowMessage('This application requires ievision.dll plugin. Please download it from www.imageen.com');
|
|
Application.Terminate;
|
|
exit;
|
|
end;
|
|
!!}
|
|
function IEVisionAvailable(): boolean;
|
|
|
|
{!!
|
|
<FS>IEVisionSize
|
|
|
|
<FM>Declaration<FC>
|
|
function IEVisionSize(width, height: int32_t): <A TIEVisionSize>;
|
|
|
|
<FM>Description<FN>
|
|
Returns a <A TIEVisionSize> record initialized with specified parameters.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>width<FN></C> <C>Width</C> </R>
|
|
<R> <C><FC>height<FN></C> <C>Height</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function IEVisionSize(width, height: int32_t): TIEVisionSize;
|
|
|
|
{!!
|
|
<FS>IEVisionRect
|
|
|
|
<FM>Declaration<FC>
|
|
function IEVisionRect(x, y, width, height: int32_t): <A TIEVisionRect>;
|
|
|
|
<FM>Description<FN>
|
|
Returns a <A TIEVisionRect> record initialized with specified parameters.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>x<FN></C> <C>Top-left horizontal coordinate.</C> </R>
|
|
<R> <C><FC>y<FN></C> <C>Top-left vertical coordinate.</C> </R>
|
|
<R> <C><FC>width<FN></C> <C>Width.</C> </R>
|
|
<R> <C><FC>height<FN></C> <C>Height.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function IEVisionRect(x, y, width, height: int32_t): TIEVisionRect;
|
|
|
|
{!!
|
|
<FS>IEVisionRectToTRect
|
|
|
|
<FM>Declaration<FC>
|
|
function IEVisionRectToTRect(Rect: <A TIEVisionRect>): TRect;
|
|
|
|
<FM>Description<FN>
|
|
Converts TIEVisionRect to VCL TRect record.
|
|
!!}
|
|
function IEVisionRectToTRect(Rect: TIEVisionRect): TRect;
|
|
|
|
{!!
|
|
<FS>IEVisionPoint
|
|
|
|
<FM>Declaration<FC>
|
|
function IEVisionPoint(x, y: int32_t): <A TIEVisionPoint>;
|
|
|
|
<FM>Description<FN>
|
|
Returns a <A TIEVisionPoint> record initialized with specified parameters.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>x<FN></C> <C>Top-left horizontal coordinate.</C> </R>
|
|
<R> <C><FC>y<FN></C> <C>Top-left vertical coordinate.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function IEVisionPoint(x, y: int32_t): TIEVisionPoint;
|
|
|
|
{!!
|
|
<FS>IEVisionScalar
|
|
|
|
<FM>Declaration<FC>
|
|
function IEVisionScalar(val0: double; val1: double = 0.0; val2: double = 0.0; val3: double = 0.0): <A TIEVisionScalar>;
|
|
|
|
<FM>Description<FN>
|
|
Returns a <A TIEVisionScalar> record initialized with specified parameters.
|
|
This structure can be also used to specify BGR colors: IEVisionScalar(0, 0, 255) = full red.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>val0<FN></C> <C>First scalar value.</C> </R>
|
|
<R> <C><FC>val1<FN></C> <C>Second scalar value.</C> </R>
|
|
<R> <C><FC>val2<FN></C> <C>Third scalar value.</C> </R>
|
|
<R> <C><FC>val3<FN></C> <C>Fourth scalar value.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function IEVisionScalar(val0: double; val1: double = 0.0; val2: double = 0.0; val3: double = 0.0): TIEVisionScalar;
|
|
|
|
{!!
|
|
<FS>IEVisionFloatPair
|
|
|
|
<FM>Declaration<FC>
|
|
function IEVisionFloatPair(first: double; second: double): <A TIEVisionFloatPair>;
|
|
|
|
<FM>Description<FN>
|
|
Returns a <A TIEVisionFloatPair> record initialized with specified parameters.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>first<FN></C> <C>First floating point value.</C> </R>
|
|
<R> <C><FC>second<FN></C> <C>Second floating point value.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function IEVisionFloatPair(first: double; second: double): TIEVisionFloatPair;
|
|
|
|
{!!
|
|
<FS>IEVisionTermCriteria
|
|
|
|
<FM>Declaration<FC>
|
|
function IEVisionTermCriteria(ctype: <A TIEVisionTermCriteriaType>; maxIter: int32_t; epsilon: double): <A TIEVisionTermCriteria>;
|
|
|
|
<FM>Description<FN>
|
|
Returns a <A TIEVisionTermCriteria> record initialized with specified parameters.
|
|
|
|
<TABLE>
|
|
<R> <H>Parameter</H> <H>Description</H> </R>
|
|
<R> <C><FC>ctype<FN></C> <C>Type of the termination criteria.</C> </R>
|
|
<R> <C><FC>maxIter<FN></C> <C>Maximum number of iterations.</C> </R>
|
|
<R> <C><FC>epsilon<FN></C> <C>Required accuracy.</C> </R>
|
|
</TABLE>
|
|
!!}
|
|
function IEVisionTermCriteria(ctype: TIEVisionTermCriteriaType; maxIter: int32_t; epsilon: double): TIEVisionTermCriteria;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
function IEVisionLanguageCodeToName(const sLangCode : string) : string;
|
|
|
|
function IEVisionLanguageNameToCode(const sLangName : string) : string;
|
|
|
|
function IEVisionGetLanguagesInFolder(ssDest : TStrings; const sFolder : string; bDisplayName : Boolean = False) : Boolean;
|
|
|
|
|
|
{!!
|
|
<FS>TIEOCRLanguages
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
type
|
|
TIEOCRLanguages = (
|
|
OCR_Ancient_Greek_Language,
|
|
OCR_German_Fraktur_Language,
|
|
OCR_English_Language,
|
|
OCR_Ukrainian_Language,
|
|
OCR_Turkish_Language,
|
|
OCR_Thai_Language,
|
|
OCR_Tagalog_Language,
|
|
OCR_Telugu_Language,
|
|
OCR_Tamil_Language,
|
|
OCR_Swedish_Language,
|
|
OCR_Swahili_Language,
|
|
OCR_Serbian_Latin_Language,
|
|
OCR_Albanian_Language,
|
|
OCR_Spanish_Old_Language,
|
|
OCR_Spanish_Language,
|
|
OCR_Slovenian_Language,
|
|
OCR_Slovakian_Language,
|
|
OCR_Romanian_Language,
|
|
OCR_Portuguese_Language,
|
|
OCR_Polish_Language,
|
|
OCR_Norwegian_Language,
|
|
OCR_Dutch_Language,
|
|
OCR_Malay_Language,
|
|
OCR_Maltese_Language,
|
|
OCR_Macedonian_Language,
|
|
OCR_Malayalam_Language,
|
|
OCR_Lithuanian_Language,
|
|
OCR_Latvian_Language,
|
|
OCR_Korean_Language,
|
|
OCR_Kannada_Language,
|
|
OCR_Italian_Old_Language,
|
|
OCR_Italian_Language,
|
|
OCR_Icelandic_Language,
|
|
OCR_Indonesian_Language,
|
|
OCR_Cherokee_Language,
|
|
OCR_Hungarian_Language,
|
|
OCR_Croatian_Language,
|
|
OCR_Hindi_Language,
|
|
OCR_Hebrew_Language,
|
|
OCR_Galician_Language,
|
|
OCR_Middle_French_1400_1600_Language,
|
|
OCR_Frankish_Language,
|
|
OCR_French_Language,
|
|
OCR_Finnish_Language,
|
|
OCR_Basque_Language,
|
|
OCR_Estonian_Language,
|
|
OCR_Esperanto_Language,
|
|
OCR_Middle_English_1100_1500_Language,
|
|
OCR_Greek_Language,
|
|
OCR_German_Language,
|
|
OCR_Danish_Language,
|
|
OCR_Czech_Language,
|
|
OCR_Catalan_Language,
|
|
OCR_Bulgarian_Language,
|
|
OCR_Bengali_Language,
|
|
OCR_Belarusian_Language,
|
|
OCR_Azerbaijani_Language,
|
|
OCR_Arabic_Language,
|
|
OCR_Afrikaans_Language,
|
|
OCR_Japanese_Language,
|
|
OCR_Chinese_Simplified_Language,
|
|
OCR_Chinese_Traditional_Language,
|
|
OCR_Russian_Language,
|
|
OCR_Vietnamese_Language,
|
|
OCR_MICR_Code,
|
|
OCR_Amharic_Language,
|
|
OCR_Assamese_Language,
|
|
OCR_Azerbaijani_Cyrillic_Language,
|
|
OCR_Tibetan_Language,
|
|
OCR_Bosnian_Language,
|
|
OCR_Cebuano_Language,
|
|
OCR_Welsh_Language,
|
|
OCR_Danish_Fraktur_Language,
|
|
OCR_Dzongkha_Language,
|
|
OCR_Equations_Language,
|
|
OCR_Persian_Language,
|
|
OCR_Irish_Language,
|
|
OCR_Gujarati_Language,
|
|
OCR_Haitian_Language,
|
|
OCR_Inuktitut_Language,
|
|
OCR_Javanese_Language,
|
|
OCR_Georgian_Language,
|
|
OCR_Georgian_Old_Language,
|
|
OCR_Kazakh_Language,
|
|
OCR_Khmer_Language,
|
|
OCR_Kyrgyz_Language,
|
|
OCR_Kurdish_Language,
|
|
OCR_Lao_Language,
|
|
OCR_Latin_Language,
|
|
OCR_Marathi_Language,
|
|
OCR_Burmese_Language,
|
|
OCR_Nepali_Language,
|
|
OCR_Oriya_Language,
|
|
OCR_Punjabi_Language,
|
|
OCR_Pashto_Language,
|
|
OCR_Sanskrit_Language,
|
|
OCR_Sinhala_Language,
|
|
OCR_Slovakian_Fraktur_Language,
|
|
OCR_Serbian_Language,
|
|
OCR_Syriac_Language,
|
|
OCR_Tajik_Language,
|
|
OCR_Tigrinya_Language,
|
|
OCR_Uyghur_Language,
|
|
OCR_Urdu_Language,
|
|
OCR_Uzbek_Language,
|
|
OCR_Uzbek_Cyrillic_Language,
|
|
OCR_Yiddish_Language
|
|
);
|
|
{!!}
|
|
|
|
|
|
{!!
|
|
<FS>TIEVisionLanguages
|
|
|
|
<FM>Declaration<FC>
|
|
}
|
|
type
|
|
TIEVisionLanguages = record
|
|
Code : PAnsiChar;
|
|
DisplayName : string;
|
|
end;
|
|
|
|
const
|
|
IEOCRLanguageList: array[TIEOCRLanguages] of TIEVisionLanguages = (
|
|
(Code: 'grc'; DisplayName: 'Ancient Greek'),
|
|
(Code: 'deu_frak'; DisplayName: 'German (Fraktur)'),
|
|
(Code: 'eng'; DisplayName: 'English'),
|
|
(Code: 'ukr'; DisplayName: 'Ukrainian'),
|
|
(Code: 'tur'; DisplayName: 'Turkish'),
|
|
(Code: 'tha'; DisplayName: 'Thai'),
|
|
(Code: 'tgl'; DisplayName: 'Tagalog'),
|
|
(Code: 'tel'; DisplayName: 'Telugu'),
|
|
(Code: 'tam'; DisplayName: 'Tamil'),
|
|
(Code: 'swe'; DisplayName: 'Swedish'),
|
|
(Code: 'swa'; DisplayName: 'Swahili'),
|
|
(Code: 'srp_latn'; DisplayName: 'Serbian (Latin)'),
|
|
(Code: 'sqi'; DisplayName: 'Albanian'),
|
|
(Code: 'spa_old'; DisplayName: 'Spanish (Old)'),
|
|
(Code: 'spa'; DisplayName: 'Spanish'),
|
|
(Code: 'slv'; DisplayName: 'Slovenian'),
|
|
(Code: 'slk'; DisplayName: 'Slovakian'),
|
|
(Code: 'ron'; DisplayName: 'Romanian'),
|
|
(Code: 'por'; DisplayName: 'Portuguese'),
|
|
(Code: 'pol'; DisplayName: 'Polish'),
|
|
(Code: 'nor'; DisplayName: 'Norwegian'),
|
|
(Code: 'nld'; DisplayName: 'Dutch'),
|
|
(Code: 'msa'; DisplayName: 'Malay'),
|
|
(Code: 'mlt'; DisplayName: 'Maltese'),
|
|
(Code: 'mkd'; DisplayName: 'Macedonian'),
|
|
(Code: 'mal'; DisplayName: 'Malayalam'),
|
|
(Code: 'lit'; DisplayName: 'Lithuanian'),
|
|
(Code: 'lav'; DisplayName: 'Latvian'),
|
|
(Code: 'kor'; DisplayName: 'Korean'),
|
|
(Code: 'kan'; DisplayName: 'Kannada'),
|
|
(Code: 'ita_old'; DisplayName: 'Italian (Old)'),
|
|
(Code: 'ita'; DisplayName: 'Italian'),
|
|
(Code: 'isl'; DisplayName: 'Icelandic'),
|
|
(Code: 'ind'; DisplayName: 'Indonesian'),
|
|
(Code: 'chr'; DisplayName: 'Cherokee'),
|
|
(Code: 'hun'; DisplayName: 'Hungarian'),
|
|
(Code: 'hrv'; DisplayName: 'Croatian'),
|
|
(Code: 'hin'; DisplayName: 'Hindi'),
|
|
(Code: 'heb'; DisplayName: 'Hebrew'),
|
|
(Code: 'glg'; DisplayName: 'Galician'),
|
|
(Code: 'frm'; DisplayName: 'Middle French (ca. 1400-1600)'),
|
|
(Code: 'frk'; DisplayName: 'Frankish'),
|
|
(Code: 'fra'; DisplayName: 'French'),
|
|
(Code: 'fin'; DisplayName: 'Finnish'),
|
|
(Code: 'eus'; DisplayName: 'Basque'),
|
|
(Code: 'est'; DisplayName: 'Estonian'),
|
|
(Code: 'epo'; DisplayName: 'Esperanto'),
|
|
(Code: 'enm'; DisplayName: 'Middle English (1100-1500)'),
|
|
(Code: 'ell'; DisplayName: 'Greek'),
|
|
(Code: 'deu'; DisplayName: 'German'),
|
|
(Code: 'dan'; DisplayName: 'Danish'),
|
|
(Code: 'ces'; DisplayName: 'Czech'),
|
|
(Code: 'cat'; DisplayName: 'Catalan'),
|
|
(Code: 'bul'; DisplayName: 'Bulgarian'),
|
|
(Code: 'ben'; DisplayName: 'Bengali'),
|
|
(Code: 'bel'; DisplayName: 'Belarusian'),
|
|
(Code: 'aze'; DisplayName: 'Azerbaijani'),
|
|
(Code: 'ara'; DisplayName: 'Arabic'),
|
|
(Code: 'afr'; DisplayName: 'Afrikaans'),
|
|
(Code: 'jpn'; DisplayName: 'Japanese'),
|
|
(Code: 'chi_sim'; DisplayName: 'Chinese (Simplified)'),
|
|
(Code: 'chi_tra'; DisplayName: 'Chinese (Traditional)'),
|
|
(Code: 'rus'; DisplayName: 'Russian'),
|
|
(Code: 'vie'; DisplayName: 'Vietnamese'),
|
|
(Code: 'mcr'; DisplayName: 'MICR'),
|
|
(Code: 'amh'; DisplayName: 'Amharic'),
|
|
(Code: 'asm'; DisplayName: 'Assamese'),
|
|
(Code: 'aze_cyrl'; DisplayName: 'Azerbaijani (Cyrillic)'),
|
|
(Code: 'bod'; DisplayName: 'Tibetan'),
|
|
(Code: 'bos'; DisplayName: 'Bosnian'),
|
|
(Code: 'ceb'; DisplayName: 'Cebuano'),
|
|
(Code: 'cym'; DisplayName: 'Welsh'),
|
|
(Code: 'dan_frak'; DisplayName: 'Danish (Fraktur)'),
|
|
(Code: 'dzo'; DisplayName: 'Dzongkha'),
|
|
(Code: 'equ'; DisplayName: 'Equations'),
|
|
(Code: 'fas'; DisplayName: 'Persian'),
|
|
(Code: 'gle'; DisplayName: 'Irish'),
|
|
(Code: 'guj'; DisplayName: 'Gujarati'),
|
|
(Code: 'hat'; DisplayName: 'Haitian'),
|
|
(Code: 'iku'; DisplayName: 'Inuktitut'),
|
|
(Code: 'jav'; DisplayName: 'Javanese'),
|
|
(Code: 'kat'; DisplayName: 'Georgian'),
|
|
(Code: 'kat_old'; DisplayName: 'Georgian (Old)'),
|
|
(Code: 'kaz'; DisplayName: 'Kazakh'),
|
|
(Code: 'khm'; DisplayName: 'Khmer'),
|
|
(Code: 'kir'; DisplayName: 'Kyrgyz'),
|
|
(Code: 'kur'; DisplayName: 'Kurdish'),
|
|
(Code: 'lao'; DisplayName: 'Lao'),
|
|
(Code: 'lat'; DisplayName: 'Latin'),
|
|
(Code: 'mar'; DisplayName: 'Marathi'),
|
|
(Code: 'mya'; DisplayName: 'Burmese'),
|
|
(Code: 'nep'; DisplayName: 'Nepali'),
|
|
(Code: 'ori'; DisplayName: 'Oriya'),
|
|
(Code: 'pan'; DisplayName: 'Punjabi'),
|
|
(Code: 'pus'; DisplayName: 'Pashto'),
|
|
(Code: 'san'; DisplayName: 'Sanskrit'),
|
|
(Code: 'sin'; DisplayName: 'Sinhala'),
|
|
(Code: 'slk_frak'; DisplayName: 'Slovakian (Fraktur)'),
|
|
(Code: 'srp'; DisplayName: 'Serbian'),
|
|
(Code: 'syr'; DisplayName: 'Syriac'),
|
|
(Code: 'tgk'; DisplayName: 'Tajik'),
|
|
(Code: 'tir'; DisplayName: 'Tigrinya'),
|
|
(Code: 'uig'; DisplayName: 'Uyghur'),
|
|
(Code: 'urd'; DisplayName: 'Urdu'),
|
|
(Code: 'uzb'; DisplayName: 'Uzbek'),
|
|
(Code: 'uzb_cyrl'; DisplayName: 'Uzbek (Cyrillic)'),
|
|
(Code: 'yid'; DisplayName: 'Yiddish')
|
|
);
|
|
{!!}
|
|
|
|
function LanguageExistsInFolder(aLanguage : TIEOCRLanguages; const sFolder : string) : Boolean; overload;
|
|
function LanguageExistsInFolder(const sLangCode : string; const sFolder : string) : Boolean; overload;
|
|
|
|
function CubeEngineExistsInFolder(aLanguage : TIEOCRLanguages; const sFolder : string) : Boolean; overload;
|
|
function CubeEngineExistsInFolder(const sLangCode : string; const sFolder : string) : Boolean; overload;
|
|
|
|
const
|
|
IEV_OCR_Language_Data_Ext = '.traineddata';
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
{!!
|
|
<FS>IEVisionLib
|
|
|
|
<FM>Declaration<FC>
|
|
function IEVisionLib(): <A TIEVisionLibrary>;
|
|
|
|
<FM>Description<FN>
|
|
When <A IEVisionAvailable> is true then this function returns a pre-built <A TIEVisionLibrary> interface which allows you to create all other IEVision objects.
|
|
|
|
|
|
<FM>Example<FC>
|
|
// creates empty image
|
|
image := IEVisionLib().createImage();
|
|
!!}
|
|
function IEVisionLib(): TIEVisionLibrary;
|
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
type
|
|
|
|
TIEVisionCustomStreamProvider = interface(IUnknown)
|
|
function size(): int64; safecall;
|
|
procedure seek(offset: int64; whence: TIEVisionSeekOffset); safecall;
|
|
function tell(): int64; safecall;
|
|
function silent_read(ptr: pointer; size: int64): int64; safecall;
|
|
function silent_write(ptr: pointer; size: int64): int64; safecall;
|
|
function silent_getc(): int32_t; safecall;
|
|
function eof(): bool32; safecall;
|
|
end;
|
|
|
|
|
|
TIEVisionCustomStream = interface(TIEVisionStream)
|
|
procedure reset(provider: TIEVisionCustomStreamProvider; wantExceptions: bool32 = false); safecall; // don't free "provider" object!
|
|
end;
|
|
|
|
|
|
TIELibJPEGErrorManager = interface(TIEVisionBase)
|
|
function getNumWarnings(wantExceptions: bool32 = false): int32_t; safecall;
|
|
function getErrMsgCode(wantExceptions: bool32 = false): int32_t; safecall;
|
|
end;
|
|
|
|
TIELibJPEGMarker = interface(TIEVisionBase)
|
|
function getID(wantExceptions: bool32 = false): uint8_t; safecall;
|
|
function getData(wantExceptions: bool32 = false): pointer; safecall;
|
|
function getLength(wantExceptions: bool32 = false): uint32_t; safecall;
|
|
function next(wantExceptions: bool32 = false): TIELibJPEGMarker; safecall;
|
|
end;
|
|
|
|
TIELibJPEGDecompressor = interface(TIEVisionBase)
|
|
procedure setErrorManager(errorManager: TIELibJPEGErrorManager; wantExceptions: bool32 = false); safecall;
|
|
procedure createDecompress(wantExceptions: bool32 = false); safecall;
|
|
procedure destroyDecompress(wantExceptions: bool32 = false); safecall;
|
|
procedure setupReadStream(stream: TIEVisionStream; bufferSize: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure readHeader(requireImage: bool32; wantExceptions: bool32 = false); safecall;
|
|
procedure saveMarkers(markerCode: int32_t; lengthLimit: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure startDecompress(wantExceptions: bool32 = false); safecall;
|
|
function getOutputWidth(wantExceptions: bool32 = false): uint32_t; safecall;
|
|
function getOutputHeight(wantExceptions: bool32 = false): uint32_t; safecall;
|
|
function getOutputComponents(wantExceptions: bool32 = false): uint32_t; safecall;
|
|
function getOutputScanline(wantExceptions: bool32 = false): uint32_t; safecall;
|
|
function readScanlines(scanlines: pointer; maxLines: uint32_t; wantExceptions: bool32 = false): uint32_t; safecall;
|
|
procedure finishDecompress(wantExceptions: bool32 = false); safecall;
|
|
procedure setOutColorSpace(colorSpace: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
function getOutColorSpace(wantExceptions: bool32 = false): uint32_t; safecall;
|
|
function getJpegColorSpace(wantExceptions: bool32 = false): uint32_t; safecall;
|
|
procedure setDCTMethod(DCTMethod: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
function getDensityUnit(wantExceptions: bool32 = false): uint8_t; safecall;
|
|
function getXDensity(wantExceptions: bool32 = false): uint16_t; safecall;
|
|
function getYDensity(wantExceptions: bool32 = false): uint16_t; safecall;
|
|
function getProgressiveMode(wantExceptions: bool32 = false): bool32; safecall;
|
|
function getImageWidth(wantExceptions: bool32 = false): uint32_t; safecall;
|
|
function getImageHeight(wantExceptions: bool32 = false): uint32_t; safecall;
|
|
procedure setScale(num: uint32_t; den: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
function getMarkerList(wantExceptions: bool32 = false): TIELibJPEGMarker; safecall;
|
|
end;
|
|
|
|
TIELibJPEGCompressor = interface(TIEVisionBase)
|
|
procedure setErrorManager(errorManager: TIELibJPEGErrorManager; wantExceptions: bool32 = false); safecall;
|
|
procedure setupWriteStream(stream: TIEVisionStream; bufferSize: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure createCompress(wantExceptions: bool32 = false); safecall;
|
|
procedure destroyCompress(wantExceptions: bool32 = false); safecall;
|
|
procedure setImageWidth(imageWidth: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setImageHeight(imageHeight: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setInputComponents(inputComponents: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setInColorSpace(colorSpace: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setColorSpace(colorSpace: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setDefaults(wantExceptions: bool32 = false); safecall;
|
|
procedure setDensityUnit(densityUnit: uint8_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setXDensity(XDensity: uint16_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setYDensity(YDensity: uint16_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setDCTMethod(DCTMethod: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setOptimizeCoding(optimizeCoding: bool32; wantExceptions: bool32 = false); safecall;
|
|
procedure setSmoothingFactor(smoothingFactor: int32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setQuality(quality: int32_t; baseline: bool32; wantExceptions: bool32 = false); safecall;
|
|
procedure setSampleFactor(componentIndex: int32_t; H: int32_t; V: int32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setWriteJFIFHeader(writeJFIFHeader: bool32; wantExceptions: bool32 = false); safecall;
|
|
procedure simpleProgression(wantExceptions: bool32 = false); safecall;
|
|
procedure startCompress(writeAllTables: bool32; wantExceptions: bool32 = false); safecall;
|
|
procedure writeMarker(markerID: int32_t; markerPtr: pointer; markerLength: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
function getNextScanlineIndex(wantExceptions: bool32 = false): uint32_t; safecall;
|
|
function writeScanlines(scanlines: pointer; maxLines: uint32_t; wantExceptions: bool32 = false): uint32_t; safecall;
|
|
procedure finishCompress(wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
TIELibJPEGTransform = interface(TIEVisionBase)
|
|
procedure requestWorkspace(source: TIELibJPEGDecompressor; wantExceptions: bool32 = false); safecall;
|
|
function adjustParameters(source: TIELibJPEGDecompressor; dest: TIELibJPEGCompressor; sourceCoefArrays: pointer; wantExceptions: bool32 = false): pointer; safecall;
|
|
procedure executeTransformation(source: TIELibJPEGDecompressor; dest: TIELibJPEGCompressor; sourceCoefArrays: pointer; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
TIELibJPEGCopy = interface(TIEVisionBase)
|
|
procedure copyMarkersSetup(source: TIELibJPEGDecompressor; copyOption: int32_t; wantExceptions: bool32 = false); safecall;
|
|
function readCoefficients(source: TIELibJPEGDecompressor; wantExceptions: bool32 = false): pointer; safecall;
|
|
procedure copyCriticalParameters(source: TIELibJPEGDecompressor; dest: TIELibJPEGCompressor; wantExceptions: bool32 = false); safecall;
|
|
procedure writeCoefficients(dest: TIELibJPEGCompressor; destCoefArrays: pointer; wantExceptions: bool32 = false); safecall;
|
|
procedure copyMarkersExecute(source: TIELibJPEGDecompressor; dest: TIELibJPEGCompressor; copyOption: int32_t; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
TIELibPNGText = interface(TIEVisionBase)
|
|
function getKey(wantExceptions: bool32 = false): PAnsiChar; safecall;
|
|
function getText(wantExceptions: bool32 = false): PAnsiChar; safecall;
|
|
function getNext(wantExceptions: bool32 = false): TIELibPNGText; safecall;
|
|
end;
|
|
|
|
TIELibPNGDecompressor = interface(TIEVisionBase)
|
|
function isValid(wantExceptions: bool32 = false): bool32; safecall;
|
|
procedure setReadFunction(ioPtr: pointer; readDataFunction: pointer; wantExceptions: bool32 = false); safecall;
|
|
procedure readInfo(wantExceptions: bool32 = false); safecall;
|
|
function getIHDR(out width: uint32_t; out height: uint32_t; out bitDepth: int32_t; out colorType: int32_t; out interlaceType: int32_t; out compressionType: int32_t; out filterType: int32_t; wantExceptions: bool32 = false): uint32_t; safecall;
|
|
function getText(out outPngText: TIELibPNGText; wantExceptions: bool32 = false): uint32_t; safecall;
|
|
function getBackground(defaultValue: TIEVisionBGR8; wantExceptions: bool32 = false): TIEVisionBGR8; safecall;
|
|
procedure setExpand(wantExceptions: bool32 = false); safecall;
|
|
procedure setStrip16(wantExceptions: bool32 = false); safecall;
|
|
procedure setPacking(wantExceptions: bool32 = false); safecall;
|
|
procedure setGrayToRGB(wantExceptions: bool32 = false); safecall;
|
|
procedure setBGR(wantExceptions: bool32 = false); safecall;
|
|
procedure setSwap(wantExceptions: bool32 = false); safecall;
|
|
procedure setTRNStoAlpha(wantExceptions: bool32 = false); safecall;
|
|
function setInterlaceHandling(wantExceptions: bool32 = false): int32_t; safecall;
|
|
procedure readUpdateInfo(wantExceptions: bool32 = false); safecall;
|
|
function getXPixelsPerMeter(wantExceptions: bool32 = false): uint32_t; safecall;
|
|
function getYPixelsPerMeter(wantExceptions: bool32 = false): uint32_t; safecall;
|
|
function getPalette(palette: pointer; out numPalette: int32_t; wantExceptions: bool32 = false): uint32_t; safecall;
|
|
function getInterlaceType(wantExceptions: bool32 = false): uint8_t; safecall;
|
|
function getChannels(wantExceptions: bool32 = false): uint8_t; safecall;
|
|
procedure readRows(row: pointer; displayRow: pointer; numRows: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure readEnd(wantExceptions: bool32 = false); safecall;
|
|
function getTRNS(trans: pointer; out numTrans: int32_t; wantExceptions: bool32 = false): uint32_t; safecall;
|
|
end;
|
|
|
|
TIELibPNGTextList = interface(TIEVisionBase)
|
|
procedure assign(index: int32_t; compression: int32_t; key: PAnsiChar; text: PAnsiChar; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
TIELibPNGCompressor = interface(TIEVisionBase)
|
|
function isValid(wantExceptions: bool32 = false): bool32; safecall;
|
|
procedure setWriteFunction(ioPtr: pointer; writeFunc: pointer; flushFunc: pointer; wantExceptions: bool32 = false); safecall;
|
|
procedure setPalette(palette: pointer; numPalette: int32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setTRNS(trans: pbyte; numTrans: int32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setIHDR(width: uint32_t; height: uint32_t; bitDepth: int32_t; colorType: int32_t; interlaceType: int32_t; compressionType: int32_t; filterType: int32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setPHYS(resX: uint32_t; resY: uint32_t; unitType: int32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setFilter(method: int32_t; filters: int32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setBackground(colorValue: TIEVisionBGR8; colorIndex: uint8_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setCompressionLevel(level: int32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure setBGR(wantExceptions: bool32 = false); safecall;
|
|
procedure writeInfo(wantExceptions: bool32 = false); safecall;
|
|
function setInterlaceHandling(wantExceptions: bool32 = false): int32_t; safecall;
|
|
procedure writeRows(row: pointer; numRows: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure writeEnd(wantExceptions: bool32 = false); safecall;
|
|
procedure setText(textList: TIELibPNGTextList; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
TIELibJP2KComponentParamsList = interface(TIEVisionBase)
|
|
procedure assign(index: int32_t; tlx: uint32_t; tly: uint32_t; hstep: uint32_t; vstep: uint32_t; width: uint32_t; height: uint32_t; prec: uint16_t; sgnd: int32_t; wantExceptions: bool32 = false); safecall;
|
|
end;
|
|
|
|
TIELibJP2KMatrix = interface(TIEVisionBase)
|
|
function getValue(i: int32_t; j: int32_t; wantExceptions: bool32 = false): int32_t; safecall;
|
|
end;
|
|
|
|
TIELibJP2KImage = interface(TIEVisionBase)
|
|
function getWidth(wantExceptions: bool32 = false): int32_t; safecall;
|
|
function getHeight(wantExceptions: bool32 = false): int32_t; safecall;
|
|
function getColorSpace(wantExceptions: bool32 = false): int32_t; safecall;
|
|
function getComponentByType(component: int32_t; wantExceptions: bool32 = false): int32_t; safecall;
|
|
function getComponentPrecision(index: int32_t; wantExceptions: bool32 = false): int32_t; safecall;
|
|
function getNumComponents(wantExceptions: bool32 = false): int32_t; safecall;
|
|
function getComponentHeight(index: int32_t; wantExceptions: bool32 = false): int32_t; safecall;
|
|
function getComponentWidth(index: int32_t; wantExceptions: bool32 = false): int32_t; safecall;
|
|
function readComponent(index: uint16_t; x: int32_t; y: int32_t; width: int32_t; height: int32_t; data: TIELibJP2KMatrix; wantExceptions: bool32 = false): int32_t; safecall;
|
|
function getComponentTopLeftY(index: int32_t; wantExceptions: bool32 = false): int32_t; safecall;
|
|
function getComponentTopLeftX(index: int32_t; wantExceptions: bool32 = false): int32_t; safecall;
|
|
function getComponentVStep(index: int32_t; wantExceptions: bool32 = false): int32_t; safecall;
|
|
function getComponentHStep(index: int32_t; wantExceptions: bool32 = false): int32_t; safecall;
|
|
procedure encode(stream: TIEVisionStream; format: int32_t; options: PAnsiChar; wantExceptions: bool32 = false); safecall;
|
|
procedure setComponentType(index: int32_t; component: int32_t; wantExceptions: bool32 = true); safecall;
|
|
procedure writeComponentSample(index: int32_t; x: int32_t; y: int32_t; v: uint32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure writeRowRGB8(width: int32_t; rowIndex: int32_t; bgr8Array: pbyte; alphaArray: pbyte; colors: int32_t; wantExceptions: bool32 = false); safecall;
|
|
procedure readLinearBGR8(blueMatrix: TIELibJP2KMatrix; greenMatrix: TIELibJP2KMatrix; redMatrix: TIELibJP2KMatrix; rowIndex: int32_t; bluePrec: int32_t; greenPrec: int32_t; redPrec: int32_t; destBGR8: pbyte; width: int32_t; wantExceptions: bool32 = true); safecall;
|
|
end;
|
|
|
|
TIELibDCRAWTextInfo = (
|
|
ievCOLOR_DESCRIPTION = 0,
|
|
ievIMAGE_DESCRIPTION = 1,
|
|
ievMAKE = 2,
|
|
ievMODEL = 3,
|
|
ievMODEL2 = 4,
|
|
ievARTIST = 5
|
|
);
|
|
|
|
TIELibDCRAWIntInfo = (
|
|
ievWIDTH = 0,
|
|
ievHEIGHT = 1,
|
|
ievORIGINAL_WIDTH = 2,
|
|
ievORIGINAL_HEIGHT = 3,
|
|
ievPIXELFORMAT = 4 // its type is TIELibDCRAWPixelFormat
|
|
);
|
|
|
|
TIELibDCRAWPixelFormat = (
|
|
ievRGB24 = 0,
|
|
ievRGB48 = 1
|
|
);
|
|
|
|
|
|
TIELibDCRAWDecoder = interface(TIEVisionBase)
|
|
function getTextInfo(info: TIELibDCRAWTextInfo; wantExceptions: bool32 = false): TIEVisionString; safecall;
|
|
function getIntInfo(info: TIELibDCRAWIntInfo; wantExceptions: bool32 = false): int32_t; safecall;
|
|
procedure getRow(rowIndex: uint32_t; destBuffer: pointer; wantExceptions: bool32 = false); safecall;
|
|
function imageLoaded(wantExceptions: bool32 = false): longbool; safecall;
|
|
function getOutStream(wantExceptions: bool32 = false): TIEVisionMemoryStream; safecall;
|
|
end;
|
|
|
|
|
|
TIELib = interface(TIEVisionBase)
|
|
procedure debug(wantExceptions: bool32 = false); safecall;
|
|
|
|
function createString(wantExceptions: bool32 = false): TIEVisionString; overload; safecall;
|
|
function createString(src: TIEVisionString; wantExceptions: bool32 = false): TIEVisionString; overload; safecall;
|
|
function createString(src: PAnsiChar; wantExceptions: bool32 = false): TIEVisionString; overload; safecall;
|
|
|
|
function createVectorString(wantExceptions: bool32 = false): TIEVisionVectorString; overload; safecall;
|
|
function createVectorString(src: TIEVisionVectorString; wantExceptions: bool32 = false): TIEVisionVectorString; overload; safecall;
|
|
|
|
function createCustomStream(provider: TIEVisionCustomStreamProvider; wantExceptions: bool32 = false): TIEVisionCustomStream; safecall;
|
|
function createJPEGErrorManager(wantExceptions: bool32 = false): TIELibJPEGErrorManager; safecall;
|
|
function createJPEGDecompressor(wantExceptions: bool32 = false): TIELibJPEGDecompressor; safecall;
|
|
function createJPEGCompressor(wantExceptions: bool32 = false): TIELibJPEGCompressor; safecall;
|
|
function createJPEGTransform(transform: int32_t; trim: bool32; forceGrayscale: bool32; xoffs: uint32_t; yoffs: uint32_t; newWidth: uint32_t; newHeight: uint32_t; wantExceptions: bool32 = false): TIELibJPEGTransform; safecall;
|
|
function createJPEGCopy(wantExceptions: bool32 = false): TIELibJPEGCopy; safecall;
|
|
|
|
function createPNGDecompressor(errorPtr: pointer; errorFunc: pointer; warnFunc: pointer; wantExceptions: bool32 = false): TIELibPNGDecompressor; safecall;
|
|
function PNGGetIOPtr(pngPtr: pointer; wantExceptions: bool32 = false): pointer; safecall;
|
|
function PNGGetErrorPtr(pngPtr: pointer; wantExceptions: bool32 = false): pointer; safecall;
|
|
function PNGSigCmp(sig: pointer; start: uint32_t; numToCheck: uint32_t; wantExceptions: bool32 = false): int32_t; safecall;
|
|
|
|
function createPNGTextList(size: uint32_t; wantExceptions: bool32 = false): TIELibPNGTextList; safecall;
|
|
function createPNGCompressor(errorPtr: pointer; errorFunc: pointer; warnFunc: pointer; wantExceptions: bool32 = false): TIELibPNGCompressor; safecall;
|
|
|
|
procedure JP2KInitialize(wantExceptions: bool32 = false); safecall;
|
|
procedure JP2KFinalize(wantExceptions: bool32 = false); safecall;
|
|
function createJP2KImage(stream: TIEVisionStream; wantExceptions: bool32 = false): TIELibJP2KImage; overload; safecall;
|
|
function createJP2KImage(numComponents: uint16_t; parameters: TIELibJP2KComponentParamsList; colorModel: int32_t; wantExceptions: bool32 = false): TIELibJP2KImage; overload; safecall;
|
|
function createJP2KComponentParamsList(size: int32_t; wantExceptions: bool32 = false): TIELibJP2KComponentParamsList; safecall;
|
|
function createJP2KMatrix(numRows: int32_t; numCols: int32_t; wantExceptions: bool32 = false): TIELibJP2KMatrix; safecall;
|
|
|
|
function createDCRAWDecoder(inStream: TIEVisionStream; parameters: TIEVisionVectorString; progressCallback: pointer; progressUserData: pointer; wantExceptions: bool32 = false): TIELibDCRAWDecoder; safecall;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure IEInitialize_ielib(const sDLLPath: WideString = ''; reinitialize: boolean = true);
|
|
procedure IEFinalize_ielib();
|
|
function IELibAvailable(): boolean;
|
|
function IELib(): TIELib;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
const
|
|
IELIB_32BIT_DLL_FILENAME1 = 'ielib.dll';
|
|
IELIB_32BIT_DLL_FILENAME2 = 'ielib32.dll';
|
|
IELIB_64BIT_DLL_FILENAME = 'ielib64.dll';
|
|
IEVISION_32BIT_DLL_FILENAME1 = 'ievision.dll';
|
|
IEVISION_32BIT_DLL_FILENAME2 = 'ievision32.dll';
|
|
IEVISION_64BIT_DLL_FILENAME = 'ievision64.dll';
|
|
|
|
IELib_DLL_Filenames : array[0 .. 5] of string = ( IELIB_32BIT_DLL_FILENAME1, IELIB_32BIT_DLL_FILENAME2,
|
|
IELIB_64BIT_DLL_FILENAME,
|
|
IEVISION_32BIT_DLL_FILENAME1, IEVISION_32BIT_DLL_FILENAME2,
|
|
IEVISION_64BIT_DLL_FILENAME );
|
|
|
|
|
|
implementation
|
|
|
|
uses
|
|
SyncObjs, iexBitmaps, hyieutils;
|
|
|
|
var
|
|
VisionHandle: THandle = 0;
|
|
IEVisionLib_: TIEVisionLibrary = nil;
|
|
IEVisionCS: TCriticalSection;
|
|
iev_Library_create: procedure(out result: TIEVisionLibrary); cdecl;
|
|
|
|
|
|
function IEVisionLib(): TIEVisionLibrary;
|
|
begin
|
|
if (VisionHandle = 0) or (IEVisionLib_ = nil) then // check also IEVisionLib_ because IEInitialize_ievision could still run in another thread
|
|
IEInitialize_ievision('', false);
|
|
result := IEVisionLib_;
|
|
end;
|
|
|
|
|
|
function IEVisionAvailable(): boolean;
|
|
begin
|
|
if (VisionHandle = 0) or (IEVisionLib_ = nil) then // check also IEVisionLib_ because IEInitialize_ievision could still run in another thread
|
|
IEInitialize_ievision('', false);
|
|
result := (VisionHandle <> 0) and (IEVisionLib_ <> nil);
|
|
end;
|
|
|
|
|
|
procedure IEInitialize_ievision(const sDLLPath: WideString = ''; reinitialize: boolean = true);
|
|
|
|
procedure TryLoad(const dllname: WideString);
|
|
begin
|
|
if VisionHandle <> 0 then
|
|
exit;
|
|
|
|
if IsLibrary then // if this is a DLL try to load from dll path
|
|
VisionHandle := LoadLibraryW(PWideChar( ExtractFilePath(GetModuleName(HInstance)) + dllname ));
|
|
|
|
if VisionHandle = 0 then // in case IsLibrary was true but LoadLibrary failed
|
|
VisionHandle := LoadLibraryW(PWideChar(dllname));
|
|
|
|
if VisionHandle <> 0 then
|
|
begin
|
|
@iev_Library_create := GetProcAddress(VisionHandle, 'iev_Library_create');
|
|
|
|
// initialization
|
|
if @iev_Library_create <> nil then
|
|
begin
|
|
iev_Library_create(IEVisionLib_);
|
|
end
|
|
else
|
|
begin
|
|
FreeLibrary(VisionHandle);
|
|
VisionHandle := 0;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
var
|
|
I: Integer;
|
|
begin
|
|
IEVisionCS.Enter();
|
|
try
|
|
if reinitialize then
|
|
IEFinalize_ievision();
|
|
|
|
if sDLLPath <> '' then
|
|
TryLoad( sDLLPath )
|
|
else
|
|
for I := Low( IELib_DLL_Filenames ) to High( IELib_DLL_Filenames ) do
|
|
TryLoad( IELib_DLL_Filenames[ I ]);
|
|
|
|
finally
|
|
IEVisionCS.Leave();
|
|
end;
|
|
end;
|
|
|
|
procedure IEFinalize_ievision();
|
|
begin
|
|
if VisionHandle <> 0 then
|
|
begin
|
|
IEVisionLib_ := nil;
|
|
FreeLibrary(VisionHandle);
|
|
VisionHandle := 0;
|
|
end;
|
|
end;
|
|
|
|
|
|
///////
|
|
|
|
|
|
var
|
|
IELibHandle: THandle = 0;
|
|
IELib_: TIELib = nil;
|
|
iev_IELib_create: procedure(out result: TIELib); cdecl;
|
|
|
|
|
|
function IELib(): TIELib;
|
|
begin
|
|
if (IELibHandle = 0) or (IELib_ = nil) then // check also IELib_ because IEInitialize_ielib could still run in another thread
|
|
IEInitialize_ielib('', false);
|
|
result := IELib_;
|
|
end;
|
|
|
|
|
|
{!!
|
|
<FS>IELibAvailable
|
|
|
|
<FM>Declaration<FC>
|
|
function IELibAvailable() : Boolean;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if the DLL's required by ImageEn are available (e.g. ielib64.dll for a 64bit ImageEn application. Also initializes the library.
|
|
|
|
<FM>Example<FC>
|
|
procedure TMainForm.FormShow(Sender: TObject);
|
|
begin
|
|
if IELibAvailable() = False then
|
|
MessageDlg(format('The installation is incomplete. Please reinstall %s', [Application_Name]), mtError, [mbOK], 0);
|
|
end;
|
|
!!}
|
|
function IELibAvailable() : Boolean;
|
|
begin
|
|
if (IELibHandle = 0) or (IELib_ = nil) then // check also IELib_ because IEInitialize_ielib could still run in another thread
|
|
IEInitialize_ielib('', false);
|
|
result := (IELibHandle <> 0) and (IELib_ <> nil);
|
|
end;
|
|
|
|
|
|
procedure IEInitialize_ielib(const sDLLPath: WideString = ''; reinitialize: boolean = true);
|
|
|
|
procedure TryLoad(const dllname: WideString);
|
|
begin
|
|
if IELibHandle <> 0 then
|
|
exit;
|
|
|
|
if IsLibrary then // if this is a DLL try to load from dll path
|
|
IELibHandle := LoadLibraryW(PWideChar( ExtractFilePath(GetModuleName(HInstance)) + dllname ));
|
|
if IELibHandle = 0 then // in case IsLibrary was true but LoadLibrary failed
|
|
IELibHandle := LoadLibraryW(PWideChar(dllname));
|
|
|
|
if IELibHandle <> 0 then
|
|
begin
|
|
@iev_IELib_create := GetProcAddress(IELibHandle, 'iev_IELib_create');
|
|
|
|
// initialization
|
|
if @iev_IELib_create <> nil then
|
|
begin
|
|
iev_IELib_create(IELib_);
|
|
end
|
|
else
|
|
begin
|
|
FreeLibrary(IELibHandle);
|
|
IELibHandle := 0;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
var
|
|
I: Integer;
|
|
begin
|
|
IEVisionCS.Enter();
|
|
try
|
|
if reinitialize then
|
|
IEFinalize_ielib();
|
|
|
|
if sDLLPath <> '' then
|
|
TryLoad( sDLLPath )
|
|
else
|
|
for I := Low( IELib_DLL_Filenames ) to High( IELib_DLL_Filenames ) do
|
|
TryLoad( IELib_DLL_Filenames[ I ]);
|
|
|
|
finally
|
|
IEVisionCS.Leave();
|
|
end;
|
|
end;
|
|
|
|
procedure IEFinalize_ielib();
|
|
begin
|
|
if IELibHandle <> 0 then
|
|
begin
|
|
IELib_ := nil;
|
|
FreeLibrary(IELibHandle);
|
|
IELibHandle := 0;
|
|
end;
|
|
end;
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
// Utilities
|
|
|
|
function IEVisionSize(width, height: int32_t): TIEVisionSize;
|
|
begin
|
|
result.width := width;
|
|
result.height := height;
|
|
end;
|
|
|
|
function IEVisionRect(x, y, width, height: int32_t): TIEVisionRect;
|
|
begin
|
|
result.x := x;
|
|
result.y := y;
|
|
result.width := width;
|
|
result.height := height;
|
|
end;
|
|
|
|
function IEVisionRectToTRect(Rect: TIEVisionRect): TRect;
|
|
begin
|
|
result.Left := Rect.x;
|
|
result.Top := Rect.y;
|
|
result.Right := Rect.x + Rect.width - 1;
|
|
result.Bottom := Rect.y + Rect.height - 1;
|
|
end;
|
|
|
|
function IEVisionPoint(x, y: int32_t): TIEVisionPoint;
|
|
begin
|
|
result.x := x;
|
|
result.y := y;
|
|
end;
|
|
|
|
function IEVisionScalar(val0: double; val1: double = 0.0; val2: double = 0.0; val3: double = 0.0): TIEVisionScalar;
|
|
begin
|
|
result.val[0] := val0;
|
|
result.val[1] := val1;
|
|
result.val[2] := val2;
|
|
result.val[3] := val3;
|
|
end;
|
|
|
|
function IEVisionFloatPair(first: double; second: double): TIEVisionFloatPair;
|
|
begin
|
|
result.first := first;
|
|
result.second := second;
|
|
end;
|
|
|
|
function IEVisionTermCriteria(ctype: TIEVisionTermCriteriaType; maxIter: int32_t; epsilon: double): TIEVisionTermCriteria;
|
|
begin
|
|
result.ctype := ctype;
|
|
result.maxIter := maxIter;
|
|
result.epsilon := epsilon;
|
|
end;
|
|
|
|
|
|
|
|
{!!
|
|
<FS>IEVisionLanguageCodeToName
|
|
|
|
<FM>Declaration<FC>
|
|
function IEVisionLanguageCodeToName(const sLangCode : string) : string;
|
|
|
|
<FM>Description<FN>
|
|
Converts a language code (which can be used for loading an OCR language file) to a display name.
|
|
|
|
E.g. IEVisionLanguageCodeToName('eng') would retun 'English'.
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEOCRLanguages>
|
|
- <A IEVisionLanguageNameToCode>
|
|
- <A IEVisionGetLanguagesInFolder>
|
|
!!}
|
|
function IEVisionLanguageCodeToName(const sLangCode : string) : string;
|
|
var
|
|
Lng : TIEOCRLanguages;
|
|
begin
|
|
Result := '';
|
|
for Lng := Low(IEOCRLanguageList) to High(IEOCRLanguageList) do
|
|
if SameText(string(AnsiString(IEOCRLanguageList[Lng].Code)), sLangCode) then
|
|
begin
|
|
Result := IEOCRLanguageList[Lng].DisplayName;
|
|
Break;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
{!!
|
|
<FS>IEVisionLanguageNameToCode
|
|
|
|
<FM>Declaration<FC>
|
|
function IEVisionLanguageNameToCode(const sLangName : string) : string;
|
|
|
|
<FM>Description<FN>
|
|
Returns the language code (which can be used for loading an OCR language file) from a display name (filled using A TIEOCRLanguages>).
|
|
|
|
E.g. IEVisionLanguageNameToCode('English') would retun 'eng'.
|
|
|
|
<FM>Example<FC>
|
|
procedure TMainForm.FormCreate(Sender: TObject);
|
|
begin
|
|
// Fill our Combobox with available languages
|
|
IEVisionGetLanguagesInFolder(cmbLanguage.Items, ExtractFilePath(Application.ExeName), True);
|
|
|
|
// Default to English
|
|
cmbLanguage.ItemIndex := cmbLanguage.Items.IndexOf(IEOCRLanguageList[OCR_English_language].DisplayName);
|
|
end;
|
|
|
|
procedure TMainForm.btnRecognizeClick(Sender: TObject);
|
|
var
|
|
sLangCode: string;
|
|
begin
|
|
// Get selected language code
|
|
sLangCode := IEVisionLanguageNameToCode(cmbLanguage.Text);
|
|
|
|
// create OCR object
|
|
m_OCR := IEVisionLib.createOCR(PAnsiChar(ExtractFilePath(Application.ExeName)), PAnsiChar(sLangCode), ievOCRFAST);
|
|
...
|
|
end;
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEOCRLanguages>
|
|
- <A IEVisionLanguageCodeToName>
|
|
- <A IEVisionGetLanguagesInFolder>
|
|
!!}
|
|
function IEVisionLanguageNameToCode(const sLangName : string) : string;
|
|
var
|
|
Lng : TIEOCRLanguages;
|
|
begin
|
|
Result := '';
|
|
for Lng := Low(IEOCRLanguageList) to High(IEOCRLanguageList) do
|
|
if SameText(IEOCRLanguageList[Lng].DisplayName, sLangName) then
|
|
begin
|
|
Result := string(AnsiString(IEOCRLanguageList[Lng].Code));
|
|
Break;
|
|
end;
|
|
end;
|
|
|
|
|
|
{!!
|
|
<FS>IEVisionGetLanguagesInFolder
|
|
|
|
<FM>Declaration<FC>
|
|
function IEVisionGetLanguagesInFolder(ssDest : TStrings; const sFolder : string; bDisplayName : Boolean = False) : Boolean;
|
|
|
|
<FM>Description<FN>
|
|
Finds all the language files in a folder and fills ssDest with their display name or language code.
|
|
|
|
Language files of IEVision will be named with a language code followed by extensions such as traineddata (IEV_OCR_Language_Data_Ext), word-freq, params, size, etc.
|
|
|
|
Result is false if no language files are found.
|
|
|
|
<FM>Example<FC>
|
|
procedure TMainForm.FormCreate(Sender: TObject);
|
|
begin
|
|
// Fill our Combobox with available languages
|
|
IEVisionGetLanguagesInFolder(cmbLanguage.Items, ExtractFilePath(Application.ExeName), True);
|
|
|
|
// Default to English
|
|
cmbLanguage.ItemIndex := cmbLanguage.Items.IndexOf(IEOCRLanguageList[OCR_English_language].DisplayName);
|
|
end;
|
|
|
|
procedure TMainForm.btnRecognizeClick(Sender: TObject);
|
|
var
|
|
sLangCode: string;
|
|
begin
|
|
// Get selected language code
|
|
sLangCode := IEVisionLanguageNameToCode(cmbLanguage.Text);
|
|
|
|
// create OCR object
|
|
m_OCR := IEVisionLib.createOCR(PAnsiChar(ExtractFilePath(Application.ExeName)), PAnsiChar(sLangCode), ievOCRFAST);
|
|
...
|
|
end;
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEOCRLanguages>
|
|
- <A LanguageExistsInFolder>
|
|
- <A IEVisionLanguageCodeToName>
|
|
- <A IEVisionLanguageNameToCode>
|
|
!!}
|
|
function IEVisionGetLanguagesInFolder(ssDest : TStrings; const sFolder : string; bDisplayName : Boolean = False) : Boolean;
|
|
var
|
|
Lng : TIEOCRLanguages;
|
|
begin
|
|
Result := False;
|
|
ssDest.BeginUpdate;
|
|
ssDest.Clear;
|
|
for Lng := Low(IEOCRLanguageList) to High(IEOCRLanguageList) do
|
|
if LanguageExistsInFolder(string(AnsiString(IEOCRLanguageList[Lng].Code)), sFolder) then
|
|
begin
|
|
if bDisplayName then
|
|
ssDest.Add(IEOCRLanguageList[Lng].DisplayName)
|
|
else
|
|
ssDest.Add(string(AnsiString(IEOCRLanguageList[Lng].Code)));
|
|
Result := True;
|
|
end;
|
|
ssDest.EndUpdate;
|
|
end;
|
|
|
|
|
|
{!!
|
|
<FS>LanguageExistsInFolder
|
|
|
|
<FM>Declaration<FC>
|
|
function LanguageExistsInFolder(aLanguage : TIEOCRLanguages; const sFolder : string) : Boolean; overload;
|
|
function LanguageExistsInFolder(const sLangCode : string; const sFolder : string) : Boolean; overload;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if the language file for the specified language is found in a folder.
|
|
|
|
Language files of IEVision will be named with a language code followed by extensions such as traineddata (IEV_OCR_Language_Data_Ext), word-freq, params, size, etc.
|
|
|
|
<FM>Examples<FC>
|
|
if LanguageExistsInFolder(IEVisionLanguageNameToCode('English'), ExtractFilePath(Application.ExeName)) = False then
|
|
MessageDlg('The English language OCR files could not be found. Please reinstall.', mtError, [mbOK], 0);
|
|
|
|
if LanguageExistsInFolder(OCR_English_language, ExtractFilePath(Application.ExeName)) = False then
|
|
MessageDlg('The English language OCR files could not be found. Please reinstall.', mtError, [mbOK], 0);
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEOCRLanguages>
|
|
- <A CubeEngineExistsInFolder>
|
|
- <A IEVisionGetLanguagesInFolder>
|
|
- <A IEVisionLanguageCodeToName>
|
|
- <A IEVisionLanguageNameToCode>
|
|
!!}
|
|
function LanguageExistsInFolder(aLanguage : TIEOCRLanguages; const sFolder : string) : Boolean;
|
|
begin
|
|
result := LanguageExistsInFolder(string(AnsiString(IEOCRLanguageList[aLanguage].Code)), sFolder);
|
|
end;
|
|
|
|
function LanguageExistsInFolder(const sLangCode : string; const sFolder : string) : Boolean;
|
|
var
|
|
sFilename: string;
|
|
begin
|
|
sFilename := IEAddBackSlash(sFolder) + sLangCode + IEV_OCR_Language_Data_Ext;
|
|
Result := FileExists(sFilename);
|
|
end;
|
|
|
|
{!!
|
|
<FS>CubeEngineExistsInFolder
|
|
|
|
<FM>Declaration<FC>
|
|
function CubeEngineExistsInFolder(aLanguage : TIEOCRLanguages; const sFolder : string) : Boolean; overload;
|
|
function CubeEngineExistsInFolder(const sLangCode : string; const sFolder : string) : Boolean; overload;
|
|
|
|
<FM>Description<FN>
|
|
Returns true if the support files for the Cube OCR engine of a specified language is found in a folder.
|
|
|
|
When <L TIEVisionLibrary.createOCR>creating the OCR engine</L> you must specify which OCR engine to use, base, Cube, or both.
|
|
|
|
If you use the base OCR engine (<FC>ievOCRFAST<FN>) you will only require the *.trained data support file, e.g. eng.traineddata for processing of an English language document. Use of <FC>ievOCRCUBE<FN> and <FC>ievOCRACCURATE<FN> require you to also enclude the *.cube.* files. e.g. eng.cube.word-freq, eng.cube.size, etc.
|
|
|
|
All existing cube trainings have the following files:
|
|
|
|
XXX.cube.fold
|
|
XXX.cube.lm
|
|
XXX.cube.nn
|
|
XXX.cube.params
|
|
XXX.cube.size
|
|
XXX.cube.word-freq
|
|
|
|
Some also have these files:
|
|
|
|
XXX.cube.bigrams
|
|
XXX.cube-word-dawg
|
|
XXX.cube-unicharset
|
|
XXX.tesseract_cube.nn
|
|
|
|
<FM>Example<FC>
|
|
if (SelectedOCREngine in [ievOCRCUBE, ievOCRACCURATE]) and (CubeEngineExistsInFolder(OCR_English_language, ExtractFilePath(Application.ExeName)) = False) then
|
|
MessageDlg('Files for the selected OCR engine could not be found. Please reinstall.', mtError, [mbOK], 0);
|
|
|
|
<FM>See Also<FN>
|
|
- <A TIEOCRLanguages>
|
|
- <A IEVisionGetLanguagesInFolder>
|
|
- <A IEVisionLanguageCodeToName>
|
|
- <A IEVisionLanguageNameToCode>
|
|
!!}
|
|
function CubeEngineExistsInFolder(aLanguage : TIEOCRLanguages; const sFolder : string) : Boolean;
|
|
begin
|
|
result := CubeEngineExistsInFolder(string(AnsiString(IEOCRLanguageList[aLanguage].Code)), sFolder);
|
|
end;
|
|
|
|
function CubeEngineExistsInFolder(const sLangCode : string; const sFolder : string) : Boolean;
|
|
const
|
|
IEV_Cube_OCR_Engine_Ext_1 = '.cube.size';
|
|
IEV_Cube_OCR_Engine_Ext_2 = '.cube.word-freq';
|
|
var
|
|
sFilename1, sFilename2 : string;
|
|
begin
|
|
sFilename1 := IEAddBackSlash(sFolder) + sLangCode + IEV_Cube_OCR_Engine_Ext_1;
|
|
sFilename2 := IEAddBackSlash(sFolder) + sLangCode + IEV_Cube_OCR_Engine_Ext_2;
|
|
Result := FileExists(sFilename1) and FileExists(sFilename2);
|
|
end;
|
|
|
|
|
|
initialization
|
|
IEVisionCS := TCriticalSection.Create();
|
|
|
|
finalization
|
|
FreeAndNil(IEVisionCS);
|
|
|
|
|
|
|
|
{$else} // IEVISION
|
|
|
|
interface
|
|
|
|
function IELibAvailable(): boolean;
|
|
function IEVisionAvailable(): boolean;
|
|
|
|
implementation
|
|
|
|
function IELibAvailable(): boolean;
|
|
begin
|
|
result := false;
|
|
end;
|
|
|
|
|
|
function IEVisionAvailable(): boolean;
|
|
begin
|
|
result := false;
|
|
end;
|
|
|
|
|
|
{$endif} // IEVISION
|
|
|
|
|
|
end.
|
|
|