You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

PlateDetection.cpp 1.3 kB

7 years ago
1234567891011121314151617181920212223242526272829303132
  1. #include "PlateDetection.h"
  2. #include "util.h"
  3. namespace pr{
  4. PlateDetection::PlateDetection(std::string filename_cascade){
  5. cascade.load(filename_cascade);
  6. };
  7. void PlateDetection::plateDetectionRough(cv::Mat InputImage,std::vector<pr::PlateInfo> &plateInfos,int min_w,int max_w){
  8. cv::Mat processImage;
  9. cv::cvtColor(InputImage,processImage,cv::COLOR_BGR2GRAY);
  10. std::vector<cv::Rect> platesRegions;
  11. cv::Size minSize(min_w,min_w/4);
  12. cv::Size maxSize(max_w,max_w/4);
  13. cascade.detectMultiScale( processImage, platesRegions,
  14. 1.1, 3, cv::CASCADE_SCALE_IMAGE,minSize,maxSize);
  15. for(auto plate:platesRegions)
  16. {
  17. int zeroadd_w = static_cast<int>(plate.width*0.30);
  18. int zeroadd_h = static_cast<int>(plate.height*2);
  19. int zeroadd_x = static_cast<int>(plate.width*0.15);
  20. int zeroadd_y = static_cast<int>(plate.height*1);
  21. plate.x-=zeroadd_x;
  22. plate.y-=zeroadd_y;
  23. plate.height += zeroadd_h;
  24. plate.width += zeroadd_w;
  25. cv::Mat plateImage = util::cropFromImage(InputImage,plate);
  26. PlateInfo plateInfo(plateImage,plate);
  27. plateInfos.push_back(plateInfo);
  28. }
  29. }
  30. }//namespace pr