void sceneTextDetector::set_Filter() { for (int i = 0; i<2; i++) { Ptr<ERFilter> er_filter1 = createERFilterNM1(loadClassifierNM1("trained_classifierNM1.xml"), 7, 0.00015f, 0.13f, 0.2f, true, 0.02f); Ptr<ERFilter> er_filter2 = createERFilterNM2(loadClassifierNM2("trained_classifierNM2.xml"), 0.2); er_filters1.push_back(er_filter1); er_filters2.push_back(er_filter2); } }
OCRTess::OCRTess(bool downsize, int region, int group) { this->downsize = downsize; this->REGION = region; this->GROUP = group; for (int i = 0; i < 2; i++) { Ptr<ERFilter> er_filter1 = createERFilterNM1(loadClassifierNM1(DIR + TR_NM1), 8, 0.00015f, 0.13f, 0.2f, true, 0.1f); Ptr<ERFilter> er_filter2 = createERFilterNM2(loadClassifierNM2(DIR + TR_NM2), 0.5); this->erf1.push_back(er_filter1); this->erf2.push_back(er_filter2); } }
void ExtractTexto::Segmentar( cv::Mat const & source, std::vector<cv::Rect> &groups_boxes ){ std::vector<cv::Mat> channels; cv::text::computeNMChannels(source, channels); groups_boxes.clear(); int cn = (int)channels.size(); for (int c = 0; c < cn-1; c++) channels.push_back(channels[c]); //Ptr<cv::text::ERFilter> er_filter1 = createERFilterNM1(loadClassifierNM1("trained_classifierNM1.xml"), 11, 0.00005, 0.2, 0.8, true, 0.5); Ptr<cv::text::ERFilter> er_filter1 = createERFilterNM1(loadClassifierNM1("trained_classifierNM1.xml"), 13, 0.0005, 0.2, 0.5, true, 0.5); Ptr<cv::text::ERFilter> er_filter2 = createERFilterNM2(loadClassifierNM2("trained_classifierNM2.xml"), 0.5); std::vector< std::vector<cv::text::ERStat> > regions(channels.size()); for (int c=0; c<(int)channels.size(); c++){ er_filter1->run(channels[c], regions[c]); er_filter2->run(channels[c], regions[c]); } std::vector< std::vector<Vec2i>> region_groups; cv::text::erGrouping(source, channels, regions, region_groups, groups_boxes, ERGROUPING_ORIENTATION_HORIZ); cv::Mat imagClone = source.clone(); findSuperRect(groups_boxes, groups_boxes); groups_draw(imagClone, groups_boxes); er_filter1.release(); er_filter2.release(); regions.clear(); }