From bbca7b0c7f0f90672b6eb78b811e08812f60838f Mon Sep 17 00:00:00 2001 From: lluis Date: Wed, 30 Jul 2014 20:34:38 +0200 Subject: [PATCH] removes hardcoded filename for ERFilter used in feedback loop by adding a dummy classifier --- modules/text/samples/textdetection.cpp | 4 +--- modules/text/src/erfilter.cpp | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/modules/text/samples/textdetection.cpp b/modules/text/samples/textdetection.cpp index d6f7397d5..2cf67b0cb 100644 --- a/modules/text/samples/textdetection.cpp +++ b/modules/text/samples/textdetection.cpp @@ -32,6 +32,7 @@ int main(int argc, const char * argv[]) if (argc < 2) show_help_and_exit(argv[0]); + namedWindow("grouping",WINDOW_NORMAL); Mat src = imread(argv[1]); // Extract channels to be processed individually @@ -59,16 +60,13 @@ int main(int argc, const char * argv[]) // Detect character groups cout << "Grouping extracted ERs ... "; - cout << "image size "<< src.cols << "x" << src.rows << endl; vector< vector > region_groups; vector groups_boxes; erGrouping(src, channels, regions, region_groups, groups_boxes, ERGROUPING_ORIENTATION_HORIZ); //erGrouping(src, channels, regions, region_groups, groups_boxes, ERGROUPING_ORIENTATION_ANY, "./trained_classifier_erGrouping.xml", 0.5); // draw groups - cout << "image size "<< src.cols << "x" << src.rows << endl; groups_draw(src, groups_boxes); - cout << "image size "<< src.cols << "x" << src.rows << endl; imshow("grouping",src); cout << "Done!" << endl << endl; diff --git a/modules/text/src/erfilter.cpp b/modules/text/src/erfilter.cpp index 5f58d6ee4..3c6a92946 100644 --- a/modules/text/src/erfilter.cpp +++ b/modules/text/src/erfilter.cpp @@ -1160,6 +1160,26 @@ Ptr loadClassifierNM2(const string& filename) return makePtr(filename); } +// dummy classifier +class ERDummyClassifier : public ERFilter::Callback +{ +public: + //Constructor + ERDummyClassifier() {} + // Destructor + ~ERDummyClassifier() {} + + // The classifier must return probability measure for the region. + double eval(const ERStat& s) {if (s.area ==0) return (double)0.0; return (double)1.0;} +}; + +/* Create a dummy classifier that accepts all regions */ +Ptr loadDummyClassifier(); +Ptr loadDummyClassifier() + +{ + return makePtr(); +} /* ------------------------------------------------------------------------------------*/ /* -------------------------------- Compute Channels NM -------------------------------*/ @@ -3858,7 +3878,7 @@ void erGroupingNM(InputArray _img, InputArrayOfArrays _src, vector< vector er_filter = createERFilterNM1(loadClassifierNM1("trained_classifierNM1.xml"),1,0.005f,0.3f,0.f,true,0.1f); + Ptr er_filter = createERFilterNM1(loadDummyClassifier(),1,0.005f,0.3f,0.f,false); for (int i=0; i<(int)valid_sequences.size(); i++) { vector bbox_points;