42 if (Blob ==
nullptr) {
50 auto RemainingOutlines = Outlines;
52 auto Outline =
static_cast<MFOUTLINE>(RemainingOutlines->first_node());
55 if (classify_norm_method ==
baseline) {
103 if (DegenerateOutline(Outline)) {
110 FeatureStart = PointAt(Next)->Point;
111 Next = NextPointAfter(Next);
118 if (!PointAt(Next)->Hidden) {
119 FeatureEnd = PointAt(Next)->Point;
122 }
while (Next != First);
139 float TotalWeight = 0.0;
150 TotalWeight += Length;
152 Origin = TotalX / TotalWeight;
float DistanceBetween(FPOINT A, FPOINT B)
float NormalizedAngleFrom(FPOINT *Point1, FPOINT *Point2, float FullScale)
#define MAX_OUTLINE_FEATURES
void FreeOutlines(LIST Outlines)
void AddOutlineFeatureToSet(FPOINT *Start, FPOINT *End, FEATURE_SET FeatureSet)
void NormalizeOutlineX(FEATURE_SET FeatureSet)
void ConvertToOutlineFeatures(MFOUTLINE Outline, FEATURE_SET FeatureSet)
LIST ConvertBlob(TBLOB *blob)
bool AddFeature(FEATURE_SET FeatureSet, FEATURE Feature)
const FEATURE_DESC_STRUCT OutlineFeatDesc
void NormalizeOutlines(LIST Outlines, float *XScale, float *YScale)
FEATURE_SET ExtractOutlineFeatures(TBLOB *Blob)
std::vector< float > Params
std::vector< FEATURE_STRUCT * > Features