Commit eb20e848dc7709ccacd1b6f35d64c471b66c2d6d
1 parent
7f659144
Generalized name/anonymize transforms
Showing
1 changed file
with
31 additions
and
13 deletions
openbr/plugins/landmarks.cpp
| ... | ... | @@ -369,12 +369,14 @@ BR_REGISTER(Transform, ReadLandmarksTransform) |
| 369 | 369 | |
| 370 | 370 | /*! |
| 371 | 371 | * \ingroup transforms |
| 372 | - * \brief Name a point | |
| 372 | + * \brief Name a point/rect | |
| 373 | 373 | * \author Scott Klum \cite sklum |
| 374 | 374 | */ |
| 375 | -class NamePointsTransform : public UntrainableMetadataTransform | |
| 375 | +class NameLandmarkTransform : public UntrainableMetadataTransform | |
| 376 | 376 | { |
| 377 | 377 | Q_OBJECT |
| 378 | + Q_PROPERTY(bool point READ get_point WRITE set_point RESET reset_point STORED false) | |
| 379 | + BR_PROPERTY(bool, point, true) | |
| 378 | 380 | Q_PROPERTY(QList<int> indices READ get_indices WRITE set_indices RESET reset_indices STORED false) |
| 379 | 381 | Q_PROPERTY(QStringList names READ get_names WRITE set_names RESET reset_names STORED false) |
| 380 | 382 | BR_PROPERTY(QList<int>, indices, QList<int>()) |
| ... | ... | @@ -382,29 +384,40 @@ class NamePointsTransform : public UntrainableMetadataTransform |
| 382 | 384 | |
| 383 | 385 | void projectMetadata(const File &src, File &dst) const |
| 384 | 386 | { |
| 385 | - if (indices.size() != names.size()) qFatal("Point/name size mismatch"); | |
| 387 | + if (indices.size() != names.size()) qFatal("Index/name size mismatch"); | |
| 386 | 388 | |
| 387 | 389 | dst = src; |
| 388 | 390 | |
| 389 | - QList<QPointF> points = src.points(); | |
| 391 | + if (point) { | |
| 392 | + QList<QPointF> points = src.points(); | |
| 390 | 393 | |
| 391 | - for (int i=0; i<indices.size(); i++) { | |
| 392 | - if (indices[i] < points.size()) dst.set(names[i], points[indices[i]]); | |
| 393 | - else qFatal("Index out of range."); | |
| 394 | + for (int i=0; i<indices.size(); i++) { | |
| 395 | + if (indices[i] < points.size()) dst.set(names[i], points[indices[i]]); | |
| 396 | + else qFatal("Index out of range."); | |
| 397 | + } | |
| 398 | + } else { | |
| 399 | + QList<QRectF> rects = src.rects(); | |
| 400 | + | |
| 401 | + for (int i=0; i<indices.size(); i++) { | |
| 402 | + if (indices[i] < rects.size()) dst.set(names[i], rects[indices[i]]); | |
| 403 | + else qFatal("Index out of range."); | |
| 404 | + } | |
| 394 | 405 | } |
| 395 | 406 | } |
| 396 | 407 | }; |
| 397 | 408 | |
| 398 | -BR_REGISTER(Transform, NamePointsTransform) | |
| 409 | +BR_REGISTER(Transform, NameLandmarkTransform) | |
| 399 | 410 | |
| 400 | 411 | /*! |
| 401 | 412 | * \ingroup transforms |
| 402 | - * \brief Remove a name from a point | |
| 413 | + * \brief Remove a name from a point/rect | |
| 403 | 414 | * \author Scott Klum \cite sklum |
| 404 | 415 | */ |
| 405 | -class AnonymizePointsTransform : public UntrainableMetadataTransform | |
| 416 | +class AnonymizeLandmarkTransform : public UntrainableMetadataTransform | |
| 406 | 417 | { |
| 407 | 418 | Q_OBJECT |
| 419 | + Q_PROPERTY(bool point READ get_point WRITE set_point RESET reset_point STORED false) | |
| 420 | + BR_PROPERTY(bool, point, true) | |
| 408 | 421 | Q_PROPERTY(QStringList names READ get_names WRITE set_names RESET reset_names STORED false) |
| 409 | 422 | BR_PROPERTY(QStringList, names, QStringList()) |
| 410 | 423 | |
| ... | ... | @@ -412,12 +425,17 @@ class AnonymizePointsTransform : public UntrainableMetadataTransform |
| 412 | 425 | { |
| 413 | 426 | dst = src; |
| 414 | 427 | |
| 415 | - foreach (const QString &name, names) | |
| 416 | - if (src.contains(name)) dst.appendPoint(src.get<QPointF>(name)); | |
| 428 | + if (point) { | |
| 429 | + foreach (const QString &name, names) | |
| 430 | + if (src.contains(name)) dst.appendPoint(src.get<QPointF>(name)); | |
| 431 | + } else { | |
| 432 | + foreach (const QString &name, names) | |
| 433 | + if (src.contains(name)) dst.appendRect(src.get<QRectF>(name)); | |
| 434 | + } | |
| 417 | 435 | } |
| 418 | 436 | }; |
| 419 | 437 | |
| 420 | -BR_REGISTER(Transform, AnonymizePointsTransform) | |
| 438 | +BR_REGISTER(Transform, AnonymizeLandmarkTransform) | |
| 421 | 439 | |
| 422 | 440 | } // namespace br |
| 423 | 441 | ... | ... |