Commit ec4f90127fc64dd6ac20a4a3ba8fc97438bd6fda
1 parent
a7d69022
Fixed { locations
Showing
1 changed file
with
18 additions
and
9 deletions
openbr/plugins/cascade.cpp
| @@ -23,7 +23,8 @@ | @@ -23,7 +23,8 @@ | ||
| 23 | 23 | ||
| 24 | using namespace cv; | 24 | using namespace cv; |
| 25 | 25 | ||
| 26 | -struct TrainParams{ | 26 | +struct TrainParams |
| 27 | +{ | ||
| 27 | QString data; // REQUIRED: Filepath to store trained classifier | 28 | QString data; // REQUIRED: Filepath to store trained classifier |
| 28 | QString vec; // REQUIRED: Filepath to store vector of positive samples, default "vector" | 29 | QString vec; // REQUIRED: Filepath to store vector of positive samples, default "vector" |
| 29 | QString img; // Filepath to source object image. Either this or info is REQUIRED | 30 | QString img; // Filepath to source object image. Either this or info is REQUIRED |
| @@ -57,7 +58,8 @@ struct TrainParams{ | @@ -57,7 +58,8 @@ struct TrainParams{ | ||
| 57 | int maxWeakCount; // Max weak tree count per stage | 58 | int maxWeakCount; // Max weak tree count per stage |
| 58 | QString mode; // Haar feature mode (BASIC, CORE, ALL) | 59 | QString mode; // Haar feature mode (BASIC, CORE, ALL) |
| 59 | 60 | ||
| 60 | - TrainParams(){ | 61 | + TrainParams() |
| 62 | + { | ||
| 61 | num = -1; | 63 | num = -1; |
| 62 | maxidev = -1; | 64 | maxidev = -1; |
| 63 | maxxangle = -1; | 65 | maxxangle = -1; |
| @@ -85,7 +87,8 @@ struct TrainParams{ | @@ -85,7 +87,8 @@ struct TrainParams{ | ||
| 85 | } | 87 | } |
| 86 | }; | 88 | }; |
| 87 | 89 | ||
| 88 | -QString buildTrainingArgs(TrainParams params){ | 90 | +QString buildTrainingArgs(TrainParams params) |
| 91 | +{ | ||
| 89 | QString args = ""; | 92 | QString args = ""; |
| 90 | if (params.data != "") args += "-data " + params.data + " "; | 93 | if (params.data != "") args += "-data " + params.data + " "; |
| 91 | else return ""; | 94 | else return ""; |
| @@ -116,7 +119,8 @@ QString buildTrainingArgs(TrainParams params){ | @@ -116,7 +119,8 @@ QString buildTrainingArgs(TrainParams params){ | ||
| 116 | } | 119 | } |
| 117 | 120 | ||
| 118 | 121 | ||
| 119 | -QString buildSampleArgs(TrainParams params){ | 122 | +QString buildSampleArgs(TrainParams params) |
| 123 | +{ | ||
| 120 | QString args = ""; | 124 | QString args = ""; |
| 121 | if (params.vec != "") args += "-vec "+params.vec+" "; | 125 | if (params.vec != "") args += "-vec "+params.vec+" "; |
| 122 | else return ""; | 126 | else return ""; |
| @@ -139,7 +143,8 @@ QString buildSampleArgs(TrainParams params){ | @@ -139,7 +143,8 @@ QString buildSampleArgs(TrainParams params){ | ||
| 139 | return args; | 143 | return args; |
| 140 | } | 144 | } |
| 141 | 145 | ||
| 142 | -void execCommand(QString cmd, QString args){ | 146 | +void execCommand(QString cmd, QString args) |
| 147 | +{ | ||
| 143 | #ifdef _WIN32 | 148 | #ifdef _WIN32 |
| 144 | cmd += ".exe"; | 149 | cmd += ".exe"; |
| 145 | #endif | 150 | #endif |
| @@ -147,21 +152,24 @@ void execCommand(QString cmd, QString args){ | @@ -147,21 +152,24 @@ void execCommand(QString cmd, QString args){ | ||
| 147 | system(cmd.toLocal8Bit().data()); | 152 | system(cmd.toLocal8Bit().data()); |
| 148 | } | 153 | } |
| 149 | 154 | ||
| 150 | -void genSamples(TrainParams params, QString argStr = ""){ | 155 | +void genSamples(TrainParams params, QString argStr = "") |
| 156 | +{ | ||
| 151 | QString cmdArgs = buildSampleArgs(params); | 157 | QString cmdArgs = buildSampleArgs(params); |
| 152 | if (argStr != "") cmdArgs += " " + argStr; | 158 | if (argStr != "") cmdArgs += " " + argStr; |
| 153 | execCommand("opencv_createsamples",cmdArgs); | 159 | execCommand("opencv_createsamples",cmdArgs); |
| 154 | } | 160 | } |
| 155 | 161 | ||
| 156 | 162 | ||
| 157 | -void trainCascade(TrainParams params,QString argStr = ""){ | 163 | +void trainCascade(TrainParams params,QString argStr = "") |
| 164 | +{ | ||
| 158 | QString cmdArgs = buildTrainingArgs(params); | 165 | QString cmdArgs = buildTrainingArgs(params); |
| 159 | if (argStr != "") cmdArgs += " " + argStr; | 166 | if (argStr != "") cmdArgs += " " + argStr; |
| 160 | 167 | ||
| 161 | execCommand("opencv_traincascade", cmdArgs); | 168 | execCommand("opencv_traincascade", cmdArgs); |
| 162 | } | 169 | } |
| 163 | 170 | ||
| 164 | -QString rectToString(QRectF r){ | 171 | +QString rectToString(QRectF r) |
| 172 | +{ | ||
| 165 | QString out = " " + QString::number(r.x()) + " " + QString::number(r.y()) + " " + QString::number(r.width()) + " "+ QString::number(r.height()); | 173 | QString out = " " + QString::number(r.x()) + " " + QString::number(r.y()) + " " + QString::number(r.width()) + " "+ QString::number(r.height()); |
| 166 | return out; | 174 | return out; |
| 167 | } | 175 | } |
| @@ -276,7 +284,8 @@ class CascadeTransform : public MetaTransform | @@ -276,7 +284,8 @@ class CascadeTransform : public MetaTransform | ||
| 276 | } | 284 | } |
| 277 | 285 | ||
| 278 | // Train transform | 286 | // Train transform |
| 279 | - void train(const TemplateList& data){ | 287 | + void train(const TemplateList& data) |
| 288 | + { | ||
| 280 | if (overwrite){ | 289 | if (overwrite){ |
| 281 | QDir dataDir(model); | 290 | QDir dataDir(model); |
| 282 | if (dataDir.exists()){ | 291 | if (dataDir.exists()){ |