Commit 9afd250b2966b3e255ba40c4ccefc6e65f1a3bd1

Authored by bhklein
1 parent c9a7215f

option to project if metadata key doesn't exist

Showing 1 changed file with 7 additions and 5 deletions
openbr/plugins/imgproc/if.cpp
@@ -15,10 +15,12 @@ class IfTransform : public MetaTransform @@ -15,10 +15,12 @@ class IfTransform : public MetaTransform
15 Q_PROPERTY(QString key READ get_key WRITE set_key RESET reset_key) 15 Q_PROPERTY(QString key READ get_key WRITE set_key RESET reset_key)
16 Q_PROPERTY(QString value READ get_value WRITE set_value RESET reset_value) 16 Q_PROPERTY(QString value READ get_value WRITE set_value RESET reset_value)
17 Q_PROPERTY(QString comparison READ get_comparison WRITE set_comparison RESET reset_comparison) 17 Q_PROPERTY(QString comparison READ get_comparison WRITE set_comparison RESET reset_comparison)
  18 + Q_PROPERTY(bool projectOnEmpty READ get_projectOnEmpty WRITE set_projectOnEmpty RESET reset_projectOnEmpty)
18 BR_PROPERTY(br::Transform*, transform, NULL) 19 BR_PROPERTY(br::Transform*, transform, NULL)
19 BR_PROPERTY(QString, key, "Label") 20 BR_PROPERTY(QString, key, "Label")
20 BR_PROPERTY(QString, value, "1") 21 BR_PROPERTY(QString, value, "1")
21 BR_PROPERTY(QString, comparison, "e") 22 BR_PROPERTY(QString, comparison, "e")
  23 + BR_PROPERTY(bool, projectOnEmpty, false)
22 24
23 bool compare(const QString &metadata) const 25 bool compare(const QString &metadata) const
24 { 26 {
@@ -55,15 +57,15 @@ public: @@ -55,15 +57,15 @@ public:
55 if (transform->trainable) { 57 if (transform->trainable) {
56 TemplateList passed; 58 TemplateList passed;
57 for (int i=0; i<data.size(); i++) 59 for (int i=0; i<data.size(); i++)
58 - if (data[i].file.contains(key) && compare(data[i].file.get<QString>(key))) 60 + if ((data[i].file.contains(key) || projectOnEmpty) && compare(data[i].file.get<QString>(key, QString())))
59 passed.append(data[i]); 61 passed.append(data[i]);
60 transform->train(passed); 62 transform->train(passed);
61 } 63 }
62 } 64 }
63 65
64 void project(const Template &src, Template &dst) const { 66 void project(const Template &src, Template &dst) const {
65 - if (src.file.contains(key) && compare(src.file.get<QString>(key)))  
66 - transform->project(src,dst); 67 + if ((src.file.contains(key) || projectOnEmpty) && compare(src.file.get<QString>(key, QString())))
  68 + transform->project(src, dst);
67 else 69 else
68 dst = src; 70 dst = src;
69 } 71 }
@@ -71,13 +73,13 @@ public: @@ -71,13 +73,13 @@ public:
71 void project(const TemplateList &src, TemplateList &dst) const { 73 void project(const TemplateList &src, TemplateList &dst) const {
72 TemplateList ifTrue, ifFalse; 74 TemplateList ifTrue, ifFalse;
73 foreach (const Template &t, src) { 75 foreach (const Template &t, src) {
74 - if (t.file.contains(key) && compare(t.file.get<QString>(key))) 76 + if ((t.file.contains(key) || projectOnEmpty) && compare(t.file.get<QString>(key, QString())))
75 ifTrue.append(t); 77 ifTrue.append(t);
76 else 78 else
77 ifFalse.append(t); 79 ifFalse.append(t);
78 } 80 }
79 81
80 - transform->project(ifTrue,dst); 82 + transform->project(ifTrue, dst);
81 dst.append(ifFalse); 83 dst.append(ifFalse);
82 } 84 }
83 85