// // Created by 庾金科 on 20/09/2017. // #include "../include/PlateDetection.h" #include "util.h" namespace pr{ PlateDetection::PlateDetection(std::string filename_cascade){ cascade.load(filename_cascade); }; void PlateDetection::plateDetectionRough(cv::Mat InputImage,std::vector &plateInfos,int min_w,int max_w){ cv::Mat processImage; cv::cvtColor(InputImage,processImage,cv::COLOR_BGR2GRAY); std::vector platesRegions; // std::vector plates; cv::Size minSize(min_w,min_w/4); cv::Size maxSize(max_w,max_w/4); // cv::imshow("input",InputImage); // cv::waitKey(0); cascade.detectMultiScale( processImage, platesRegions, 1.1, 3, cv::CASCADE_SCALE_IMAGE,minSize,maxSize); for(auto plate:platesRegions) { // extend rects // x -= w * 0.14 // w += w * 0.28 // y -= h * 0.6 // h += h * 1.1; int zeroadd_w = static_cast(plate.width*0.28); int zeroadd_h = static_cast(plate.height*1.2); int zeroadd_x = static_cast(plate.width*0.14); int zeroadd_y = static_cast(plate.height*0.6); plate.x-=zeroadd_x; plate.y-=zeroadd_y; plate.height += zeroadd_h; plate.width += zeroadd_w; cv::Mat plateImage = util::cropFromImage(InputImage,plate); PlateInfo plateInfo(plateImage,plate); plateInfos.push_back(plateInfo); } } // std::vector PlateDetection::plateDetectionRough(cv::Mat InputImage,cv::Rect roi,int min_w,int max_w){ // cv::Mat roi_region = util::cropFromImage(InputImage,roi); // return plateDetectionRough(roi_region,min_w,max_w); // } }//namespace pr