Commit 4896059836486e7b8e85613e0eef838933b6446c

Authored by caotto
1 parent c8ab0035

Handle facevacs config file location

Export the facevacs directory found by cmake, use that to define a default
config file location of facevacs_dir/etc/frsdk.cfg. Store the config file
path as a property of Globals, allowing users to specify a config file path
as a command line argument to br.exe.
Modifications to openbr_plugin.cpp allow adding dynamic properties (strings
only) to br::Objects.
sdk/openbr_plugin.cpp
@@ -581,7 +581,7 @@ void Object::setProperty(const QString &name, const QString &value) @@ -581,7 +581,7 @@ void Object::setProperty(const QString &name, const QString &value)
581 QString type; 581 QString type;
582 int index = metaObject()->indexOfProperty(qPrintable(name)); 582 int index = metaObject()->indexOfProperty(qPrintable(name));
583 if (index != -1) type = metaObject()->property(index).typeName(); 583 if (index != -1) type = metaObject()->property(index).typeName();
584 - else return; 584 + else type = "";
585 585
586 QVariant variant; 586 QVariant variant;
587 if (type.startsWith("QList<") && type.endsWith(">")) { 587 if (type.startsWith("QList<") && type.endsWith(">")) {
@@ -619,9 +619,7 @@ void Object::setProperty(const QString &amp;name, const QString &amp;value) @@ -619,9 +619,7 @@ void Object::setProperty(const QString &amp;name, const QString &amp;value)
619 variant = value; 619 variant = value;
620 } 620 }
621 621
622 - if (!QObject::setProperty(qPrintable(name), variant))  
623 - qFatal("Failed to set %s::%s to: %s %s",  
624 - metaObject()->className(), qPrintable(name), qPrintable(value), qPrintable(type)); 622 + QObject::setProperty(qPrintable(name), variant);
625 } 623 }
626 624
627 QStringList br::Object::parse(const QString &string, char split) 625 QStringList br::Object::parse(const QString &string, char split)
sdk/plugins/ct8.cmake
@@ -12,4 +12,5 @@ if(${BR_WITH_CT8}) @@ -12,4 +12,5 @@ if(${BR_WITH_CT8})
12 ${CT8_DIR_LIB}/../share/libiomp5.so 12 ${CT8_DIR_LIB}/../share/libiomp5.so
13 DESTINATION lib) 13 DESTINATION lib)
14 install(DIRECTORY ${CT8_DIR}/etc DESTINATION models/ct8) 14 install(DIRECTORY ${CT8_DIR}/etc DESTINATION models/ct8)
  15 + add_definitions(-DCT8_DIR=\"${CT8_DIR}\")
15 endif() 16 endif()
sdk/plugins/ct8.cpp
@@ -18,6 +18,8 @@ @@ -18,6 +18,8 @@
18 using namespace cv; 18 using namespace cv;
19 using namespace br; 19 using namespace br;
20 20
  21 +#define CT8_CONFIG_PROP "ct8ConfigFile"
  22 +
21 namespace FRsdk { 23 namespace FRsdk {
22 // Construct a FaceVACS sdk ImageBody from an opencv Mat 24 // Construct a FaceVACS sdk ImageBody from an opencv Mat
23 struct OpenCVImageBody : public ImageBody 25 struct OpenCVImageBody : public ImageBody
@@ -135,18 +137,18 @@ namespace FRsdk { @@ -135,18 +137,18 @@ namespace FRsdk {
135 }; 137 };
136 } 138 }
137 139
138 -  
139 struct CT8Initialize : public Initializer 140 struct CT8Initialize : public Initializer
140 { 141 {
141 static FRsdk::Configuration* CT8Configuration; 142 static FRsdk::Configuration* CT8Configuration;
142 - 143 +public:
143 // ct8 plugin initialization, load a FRsdk config file, and register 144 // ct8 plugin initialization, load a FRsdk config file, and register
144 // the shortcut for using FaceVACS feature extraction/comparison 145 // the shortcut for using FaceVACS feature extraction/comparison
145 void initialize() const 146 void initialize() const
146 { 147 {
147 try { 148 try {
148 - // Need to do something different wrt getting the config file location -cao  
149 - CT8Configuration = new FRsdk::Configuration("C:/FVSDK_8_6_0/etc/frsdk.cfg"); 149 + QString store_string = QString((CT8_DIR + std::string("/etc/frsdk.cfg")).c_str());
  150 + Globals->setProperty(CT8_CONFIG_PROP, store_string);
  151 + CT8Configuration = NULL;
150 Globals->abbreviations.insert("CT8","Open+CT8Detect!CT8Enroll:CT8Compare"); 152 Globals->abbreviations.insert("CT8","Open+CT8Detect!CT8Enroll:CT8Compare");
151 } catch (std::exception &e) { 153 } catch (std::exception &e) {
152 qWarning("CT8Initialize Exception: %s", e.what()); 154 qWarning("CT8Initialize Exception: %s", e.what());
@@ -154,6 +156,21 @@ struct CT8Initialize : public Initializer @@ -154,6 +156,21 @@ struct CT8Initialize : public Initializer
154 } 156 }
155 } 157 }
156 158
  159 + static FRsdk::Configuration * getCT8Configuration()
  160 + {
  161 + if (!CT8Configuration) {
  162 + QVariant recovered_variant= Globals->property(CT8_CONFIG_PROP);
  163 + QString recovered_string = recovered_variant.toString();
  164 + try {
  165 + CT8Configuration = new FRsdk::Configuration(qPrintable(recovered_string));
  166 + } catch (std::exception &e) {
  167 + qFatal("CT8Initialize Exception: %s", e.what());
  168 + }
  169 + }
  170 + return CT8Configuration;
  171 + }
  172 +
  173 +
157 void finalize() const 174 void finalize() const
158 { 175 {
159 delete CT8Configuration; 176 delete CT8Configuration;
@@ -183,10 +200,10 @@ struct CT8Context @@ -183,10 +200,10 @@ struct CT8Context
183 CT8Context() 200 CT8Context()
184 { 201 {
185 try { 202 try {
186 - faceFinder = new FRsdk::Face::Finder(*CT8Initialize::CT8Configuration);  
187 - eyesFinder = new FRsdk::Eyes::Finder(*CT8Initialize::CT8Configuration);  
188 - firBuilder = new FRsdk::FIRBuilder(*CT8Initialize::CT8Configuration);  
189 - facialMatchingEngine = new FRsdk::FacialMatchingEngine(*CT8Initialize::CT8Configuration); 203 + faceFinder = new FRsdk::Face::Finder(*CT8Initialize::getCT8Configuration());
  204 + eyesFinder = new FRsdk::Eyes::Finder(*CT8Initialize::getCT8Configuration());
  205 + firBuilder = new FRsdk::FIRBuilder(*CT8Initialize::getCT8Configuration());
  206 + facialMatchingEngine = new FRsdk::FacialMatchingEngine(*CT8Initialize::getCT8Configuration());
190 } catch (std::exception &e) { 207 } catch (std::exception &e) {
191 qFatal("CT8Context Exception: %s", e.what()); 208 qFatal("CT8Context Exception: %s", e.what());
192 } 209 }