Commit aaf27b692cb2f3d786d3247923873dc134b344fb
1 parent
de26fcbb
Move default train implementations to openbr_plugin.cpp
Showing
2 changed files
with
24 additions
and
20 deletions
openbr/openbr_plugin.cpp
| ... | ... | @@ -1225,6 +1225,26 @@ TemplateEvent * Transform::getEvent(const QString & name) |
| 1225 | 1225 | return NULL; |
| 1226 | 1226 | } |
| 1227 | 1227 | |
| 1228 | +void Transform::train(const TemplateList &data) | |
| 1229 | +{ | |
| 1230 | + if (!trainable) { | |
| 1231 | + qWarning("Train called on untrainable transform %s", this->metaObject()->className()); | |
| 1232 | + return; | |
| 1233 | + } | |
| 1234 | + QList<TemplateList> input; | |
| 1235 | + input.append(data); | |
| 1236 | + train(input); | |
| 1237 | +} | |
| 1238 | + | |
| 1239 | +void Transform::train(const QList<TemplateList> &data) | |
| 1240 | +{ | |
| 1241 | + TemplateList combined; | |
| 1242 | + foreach(const TemplateList & set, data) { | |
| 1243 | + combined.append(set); | |
| 1244 | + } | |
| 1245 | + train(combined); | |
| 1246 | +} | |
| 1247 | + | |
| 1228 | 1248 | /* Distance - public methods */ |
| 1229 | 1249 | Distance *Distance::make(QString str, QObject *parent) |
| 1230 | 1250 | { | ... | ... |
openbr/openbr_plugin.h
| ... | ... | @@ -1074,6 +1074,9 @@ public: |
| 1074 | 1074 | |
| 1075 | 1075 | virtual Transform *clone() const; /*!< \brief Copy the transform. */ |
| 1076 | 1076 | |
| 1077 | + /*!< \brief Train the transform. */ | |
| 1078 | + virtual void train(const TemplateList &data); | |
| 1079 | + | |
| 1077 | 1080 | /*!< \brief Train the transform, separate list items represent the way calls to project would be broken up |
| 1078 | 1081 | * Transforms that have to call train on another transform should implement train(QList), the strucutre of the |
| 1079 | 1082 | * list should mirror the calls that would be made to project by the parent transform. For example, DistributeTemplates |
| ... | ... | @@ -1082,26 +1085,7 @@ public: |
| 1082 | 1085 | * This version of train(QList) is appropriate for transforms that perform training on themselves, and don't call train |
| 1083 | 1086 | * on other transforms. It combines everything in data into a single TemplateList, then calls train(TemplateList) |
| 1084 | 1087 | */ |
| 1085 | - virtual void train(const QList<TemplateList> &data) | |
| 1086 | - { | |
| 1087 | - TemplateList combined; | |
| 1088 | - foreach(const TemplateList & set, data) { | |
| 1089 | - combined.append(set); | |
| 1090 | - } | |
| 1091 | - train(combined); | |
| 1092 | - } | |
| 1093 | - | |
| 1094 | - /*!< \brief Train the transform. */ | |
| 1095 | - virtual void train(const TemplateList &data) | |
| 1096 | - { | |
| 1097 | - if (!trainable) { | |
| 1098 | - qWarning("Train called on untrainable transform %s", this->metaObject()->className()); | |
| 1099 | - return; | |
| 1100 | - } | |
| 1101 | - QList<TemplateList> input; | |
| 1102 | - input.append(data); | |
| 1103 | - train(input); | |
| 1104 | - } | |
| 1088 | + virtual void train(const QList<TemplateList> &data); | |
| 1105 | 1089 | |
| 1106 | 1090 | /*!< \brief Apply the transform to a single template. Typically used by independent transforms */ |
| 1107 | 1091 | virtual void project(const Template &src, Template &dst) const = 0; | ... | ... |