Commit 0c56c80eefdad3d2abbdc15ace581a8e5d7de392
1 parent
40cad71c
Don't do an affine wrap with bad points
Showing
1 changed file
with
23 additions
and
19 deletions
openbr/plugins/imgproc/rndaffine.cpp
| ... | ... | @@ -42,29 +42,33 @@ class RndAffineTransform : public UntrainableMetaTransform |
| 42 | 42 | QPointF affine_0 = t.file.get<QPointF>("Affine_0"); |
| 43 | 43 | QPointF affine_1 = t.file.get<QPointF>("Affine_1"); |
| 44 | 44 | |
| 45 | - // Append the original points | |
| 46 | - Template u = t; | |
| 47 | - u.file.setPoints(QList<QPointF>() << affine_0 << affine_1); | |
| 48 | - u.file.set("Affine_0", affine_0); | |
| 49 | - u.file.set("Affine_1", affine_1); | |
| 50 | - dst.append(u); | |
| 45 | + if (affine_0 != QPoint(-1,-1) && affine_1 != QPoint(-1,-1)) { | |
| 46 | + // Append the original points | |
| 47 | + Template u = t; | |
| 48 | + u.file.setPoints(QList<QPointF>() << affine_0 << affine_1); | |
| 49 | + u.file.set("Affine_0", affine_0); | |
| 50 | + u.file.set("Affine_1", affine_1); | |
| 51 | + dst.append(u); | |
| 51 | 52 | |
| 52 | - const double IPD = sqrt(pow(affine_0.x() - affine_1.x(), 2) + pow(affine_0.y() - affine_1.y(), 2)); | |
| 53 | - for (int i = 0; i < numAffines; i++) { | |
| 54 | - int angle = (rand() % (2*maxAngle)) - maxAngle; | |
| 53 | + const double IPD = sqrt(pow(affine_0.x() - affine_1.x(), 2) + pow(affine_0.y() - affine_1.y(), 2)); | |
| 54 | + if (IPD != 0) { | |
| 55 | + for (int i = 0; i < numAffines; i++) { | |
| 56 | + int angle = (rand() % (2*maxAngle)) - maxAngle; | |
| 55 | 57 | |
| 56 | - int min = (int)(sqrt(1 / scaleFactor) * IPD); | |
| 57 | - int max = (int)(sqrt(scaleFactor) * IPD); | |
| 58 | - int dx = (rand() % (max - min)) + min; | |
| 59 | - int dy = (dx * sin(angle * M_PI / 180))/2; | |
| 58 | + int min = (int)(sqrt(1 / scaleFactor) * IPD); | |
| 59 | + int max = (int)(sqrt(scaleFactor) * IPD); | |
| 60 | + int dx = (rand() % (max - min)) + min; | |
| 61 | + int dy = (dx * sin(angle * M_PI / 180))/2; | |
| 60 | 62 | |
| 61 | - QPointF shiftedAffine_0 = QPointF(affine_1.x() - dx, affine_1.y() + dy); | |
| 63 | + QPointF shiftedAffine_0 = QPointF(affine_1.x() - dx, affine_1.y() + dy); | |
| 62 | 64 | |
| 63 | - Template u = t; | |
| 64 | - u.file.setPoints(QList<QPointF>() << shiftedAffine_0 << affine_1); | |
| 65 | - u.file.set("Affine_0", shiftedAffine_0); | |
| 66 | - u.file.set("Affine_1", affine_1); | |
| 67 | - dst.append(u); | |
| 65 | + Template u = t; | |
| 66 | + u.file.setPoints(QList<QPointF>() << shiftedAffine_0 << affine_1); | |
| 67 | + u.file.set("Affine_0", shiftedAffine_0); | |
| 68 | + u.file.set("Affine_1", affine_1); | |
| 69 | + dst.append(u); | |
| 70 | + } | |
| 71 | + } | |
| 68 | 72 | } |
| 69 | 73 | } |
| 70 | 74 | } | ... | ... |