diff options
| author | Jaromil <[email protected]> | 2011-03-09 09:03:07 (GMT) |
|---|---|---|
| committer | Jaromil <[email protected]> | 2011-03-09 09:03:07 (GMT) |
| commit | 18a81bfc913d305efc4be16d057f52b5e752dcb4 (patch) | |
| tree | 2da93004e4b8f569cb950b4600b1b6992a2b01d9 | |
| parent | a423952dbbe848b25753748ad7ebef8b1d5527c7 (diff) | |
| parent | 3c3dcd9b1267041893cbac82c7c1e7097fb0092e (diff) | |
Merge branch 'upstream' into debian0
| -rw-r--r-- | src/filter/facebl0r/facebl0r.cpp | 29 |
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 ); |

