MeasureAngleBetweenEdges
Measure the angle between 2 edges.
Can use available TwinCAT Job Tasks for executing parallel code regions.
Can return partial results when canceled by Watchdog.
Syntax
Definition:
HRESULT MeasureAngleBetweenEdges(
HRESULT hrPrev,
ITcVnImage* ipSrcImage,
float& fAngle,
TcVnPoint2_REAL& aInnerPoint,
TcVnPoint2_REAL& aOuterPoint1,
TcVnPoint2_REAL& aOuterPoint2,
ETcVnEdgeDirection eEdgeDirection,
float fMinStrength,
ULONG nSearchLines,
float fSearchLineDist = 1,
ULONG nMaxThickness = 10,
bool bInvertSearchDirection = false,
ULONG nSubpixelsIterations = 10,
bool bAngleInDegrees = false,
float fApproxPrecision = 0.001f,
ETcVnEdgeDetectionAlgorithm eAlgorithm = EDA_INTERPOLATION,
ITcVnContainer** pipEdgePoints1 = nullptr,
ITcVnContainer** pipEdgePoints2 = nullptr
)
Parameters
Name |
Type |
Default |
Description |
---|---|---|---|
hrPrev |
|
HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.) | |
ipSrcImage |
|
Source image (1 channel) | |
fAngle |
float& |
|
Returns the angle between the detected edges (radians or degrees, depending on bAngleInDegrees) |
aInnerPoint |
|
Position inside the angle to measure, from which to start the edge search process (in the direction of aOuterPoint1 and aOuterPoint2) | |
aOuterPoint1 |
|
Position where the search process for edge 1 ends | |
aOuterPoint2 |
|
Position where the search process for edge 2 ends | |
eEdgeDirection |
|
Specification of the edge direction from aInnerPoint to aOuterPoint1 and aOuterPoint2 to search for | |
fMinStrength |
float |
|
Specification of the minimum strength (intensity difference) of the edge to search for |
nSearchLines |
ULONG |
|
Width of the search window, i.e. the number of search lines (3, 5, 7, ...), centered around the line specified by aInnerPoint and aOuterPoint1, aOuterPoint2 |
fSearchLineDist |
float |
1 |
Distance between the search lines in pixels (> 0) |
nMaxThickness |
ULONG |
10 |
Specification of the maximum thickness of the edge to search for, which means fMinStrength must be reached within nMaxThickness pixels |
bInvertSearchDirection |
bool |
false |
If true, the search starts from each aOuterPoint in direction of aInnerPoint |
nSubpixelsIterations |
ULONG |
10 |
Specifies the number of subpixels (for INTERPOLATION, 10 - 20 usually is sufficient) or maximum number of iterations for optimizing the parameters (for APPROX_ERF and APPROX_GAUSSIAN, 50 - 100 usually is sufficient) |
bAngleInDegrees |
bool |
false |
fAngle is in degrees, if true |
fApproxPrecision |
float |
0.001f |
Specifies the approximation precision for APPROX_ERF and APPROX_GAUSSIAN (0.001 usually is sufficient, unused for INTERPOLATION) |
eAlgorithm |
EDA_INTERPOLATION |
Selection of the edge detection algorithm | |
pipEdgePoints1 |
nullptr |
Returns the detected edge points between aInnerPoint and aOuterPoint1 (ContainerType_Vector_TcVnPoint2_REAL) | |
pipEdgePoints2 |
nullptr |
Returns the detected edge points between aInnerPoint and aOuterPoint2 (ContainerType_Vector_TcVnPoint2_REAL) |
Required License
TC3 Vision Metrology 2D
System Requirements
Development environment | Target platform | PLC libraries to include |
---|---|---|
TwinCAT V3.1.4024.54 or later | PC or CX (x64) with PL50, e.g. Intel 4-core Atom CPU | Tc3_Vision |