summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaromil <[email protected]>2011-03-09 09:03:07 (GMT)
committer Jaromil <[email protected]>2011-03-09 09:03:07 (GMT)
commit18a81bfc913d305efc4be16d057f52b5e752dcb4 (patch)
tree2da93004e4b8f569cb950b4600b1b6992a2b01d9
parenta423952dbbe848b25753748ad7ebef8b1d5527c7 (diff)
parent3c3dcd9b1267041893cbac82c7c1e7097fb0092e (diff)
Merge branch 'upstream' into debian0
-rw-r--r--src/filter/facebl0r/facebl0r.cpp29
1 files changed, 21 insertions, 8 deletions
diff --git a/src/filter/facebl0r/facebl0r.cpp b/src/filter/facebl0r/facebl0r.cpp
index e7e1e78..4d4100c 100644
--- a/src/filter/facebl0r/facebl0r.cpp
+++ b/src/filter/facebl0r/facebl0r.cpp
@@ -75,6 +75,10 @@ private:
f0r_param_double smallest;
f0r_param_double largest;
+ f0r_param_string classifier;
+ char old_classifier[512];
+
+
unsigned int face_found;
unsigned int face_notfound;
};
@@ -128,18 +132,27 @@ void FaceBl0r::update() {
if (!cascade) {
cvSetNumThreads(cvRound(threads * 100));
- f0r_param_string classifier;
get_param_value(&classifier, FACEBL0R_PARAM_CLASSIFIER);
if (classifier) {
- cascade = (CvHaarClassifierCascade*) cvLoad(classifier, 0, 0, 0 );
- if (!cascade)
- fprintf(stderr, "ERROR: Could not load classifier cascade %s\n", classifier);
- storage = cvCreateMemStorage(0);
+ if ( strcmp(classifier, old_classifier) == 0) {
+ // same as before, avoid repeating error messages
+ memcpy(out, in, size * 4); // of course assuming we are RGBA only
+ return;
+ } else strcpy(old_classifier, classifier);
+
+ cascade = (CvHaarClassifierCascade*) cvLoad(classifier, 0, 0, 0 );
+ if (!cascade) {
+ fprintf(stderr, "ERROR in filter facebl0r, classifier cascade not found:\n");
+ fprintf(stderr, " %s\n", classifier);
+ memcpy(out, in, size * 4);
+ return;
+ }
+ storage = cvCreateMemStorage(0);
}
else {
- memcpy(out, in, size * 4);
- return;
- }
+ memcpy(out, in, size * 4);
+ return;
+ }
}
if( !image )
image = cvCreateImage( cvSize(width,height), IPL_DEPTH_8U, 4 );