Commit c8ab003586006bd6a35a3c4c2e0e60f8fce4cda7

Authored by caotto
1 parent e035e21e

Surface the FaceVACS face detector's interoccular distance parameters

Showing 1 changed file with 9 additions and 2 deletions
sdk/plugins/ct8.cpp
@@ -270,7 +270,12 @@ protected: @@ -270,7 +270,12 @@ protected:
270 struct CT8Detect : public UntrainableTransform 270 struct CT8Detect : public UntrainableTransform
271 , public CT8Context 271 , public CT8Context
272 { 272 {
  273 +public:
273 Q_OBJECT 274 Q_OBJECT
  275 +
  276 + Q_PROPERTY(float minRelEyeDistance READ get_minRelEyeDistance WRITE set_minRelEyeDistance RESET reset_minRelEyeDistance STORED false)
  277 + Q_PROPERTY(float maxRelEyeDistance READ get_maxRelEyeDistance WRITE set_maxRelEyeDistance RESET reset_maxRelEyeDistance STORED false)
  278 +
274 // Perform face, then eye detection using the facevacs SDK 279 // Perform face, then eye detection using the facevacs SDK
275 void project(const Template &src, Template &dst) const 280 void project(const Template &src, Template &dst) const
276 { 281 {
@@ -279,8 +284,7 @@ struct CT8Detect : public UntrainableTransform @@ -279,8 +284,7 @@ struct CT8Detect : public UntrainableTransform
279 FRsdk::CountedPtr<FRsdk::ImageBody> i(new FRsdk::OpenCVImageBody(src)); 284 FRsdk::CountedPtr<FRsdk::ImageBody> i(new FRsdk::OpenCVImageBody(src));
280 FRsdk::Image img(i); 285 FRsdk::Image img(i);
281 286
282 - // .01 here should be a parameter -cao  
283 - FRsdk::Face::LocationSet faceLocations = faceFinder->find(img, 0.01f); 287 + FRsdk::Face::LocationSet faceLocations = faceFinder->find(img, minRelEyeDistance, maxRelEyeDistance);
284 288
285 // If the face finder doesn't find anything mark the output as a failure 289 // If the face finder doesn't find anything mark the output as a failure
286 if (faceLocations.empty() ) { 290 if (faceLocations.empty() ) {
@@ -324,6 +328,9 @@ struct CT8Detect : public UntrainableTransform @@ -324,6 +328,9 @@ struct CT8Detect : public UntrainableTransform
324 328
325 if (!Globals->enrollAll && dst.isEmpty()) dst += Mat(); 329 if (!Globals->enrollAll && dst.isEmpty()) dst += Mat();
326 } 330 }
  331 +private:
  332 + BR_PROPERTY(float, minRelEyeDistance, 0.01f)
  333 + BR_PROPERTY(float, maxRelEyeDistance, 0.4f)
327 }; 334 };
328 335
329 BR_REGISTER(Transform, CT8Detect) 336 BR_REGISTER(Transform, CT8Detect)