| centroids | NPARRAY | (N,1,2) float32 center of mass per contour - plugs into 'CV Draw Points' / 'Draw Labels'. |
| areas | NPARRAY | (N,) float32 area in px^2 (the m00 moment). |
| angles | NPARRAY | (N,) float32 orientation of the major axis in degrees, [-90, 90), measured from the +X axis with Y pointing DOWN (image coordinates). Meaningless for near-circular shapes (eccentricity ~ 0). |
| eccentricities | NPARRAY | (N,) float32 elongation in 0-1: 0 = perfect circle, -> 1 = a line. From the central-moment eigenvalues. |
| axes | NPARRAY | (N,4) float32 major-axis segments (x1, y1, x2, y2) through each centroid, 2 standard deviations long per side - plugs into 'CV Draw Segments'. |
| hu_moments | NPARRAY | (N,7) float32 log-scaled Hu invariants: -sign(h)*log10(|h|) per component (the raw values span ~40 orders of magnitude). Compare shapes with 'CV Filter Contours By Shape' or a vector distance. |
| count | INT | — |
| orientations | NPARRAY | (N,) float32 canonical orientation in degrees, 0-360, from the +X axis with Y pointing DOWN. Unlike 'angles' (defined only mod 180) the head is told from the tail using the third-order moments, so a shape and its 180-degree rotation read differently. Always equals 'angles' or 'angles' + 180. MEANINGLESS when pose_confidence is ~0. |
| chirality | NPARRAY | (N,) float32 signed handedness, from the 7th Hu invariant - the ONLY one that is not reflection-invariant (OpenCV: "invariants to the image scale, rotation, and reflection except the seventh one, whose sign is changed by reflection"; Hu 1962). h7 is also the one routinely DISCARDED in practice, because it is the smallest and noisiest of the seven - raw values here are ~1e-6 - so this output rescales it as sign(h7)*|h7|**0.25 to put it on a thresholdable scale. The SIGN flips when the shape is mirrored and survives any rotation or scale; the MAGNITUDE says how far to trust it: an 'F' glyph reads 0.020-0.048, a scalene triangle 0.0069, and a mirror-symmetric shape (square, circle, ellipse, isoceles triangle) reads below ~0.005, where the sign is only rasterization noise (OpenCV again: the invariance assumes "infinite image resolution"). It agrees in SIGN with hu_moments[:,6] - that column negates the sign but also takes log10 of a value far below 1, and the two flips cancel. |
| pose_confidence | NPARRAY | (N,) float32 how well-defined 'orientations' is: the normalized third moment along the major axis. Measured 0.052 for a strongly asymmetric shape, 0.00057 for an ellipse and 0.0 for a square or circle - so test against ~0.005, not against 0. Below that the 0-360 orientation is a coin flip and any rotation measured from it is noise. |