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.9 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. //
  2. // Created by 庾金科 on 20/09/2017.
  3. //
  4. #include "../include/PlateDetection.h"
  5. #include "util.h"
  6. namespace pr{
  7. PlateDetection::PlateDetection(std::string filename_cascade){
  8. cascade.load(filename_cascade);
  9. };
  10. void PlateDetection::plateDetectionRough(cv::Mat InputImage,std::vector<pr::PlateInfo> &plateInfos,int min_w,int max_w){
  11. cv::Mat processImage;
  12. cv::cvtColor(InputImage,processImage,cv::COLOR_BGR2GRAY);
  13. std::vector<cv::Rect> platesRegions;
  14. // std::vector<PlateInfo> plates;
  15. cv::Size minSize(min_w,min_w/4);
  16. cv::Size maxSize(max_w,max_w/4);
  17. // cv::imshow("input",InputImage);
  18. // cv::waitKey(0);
  19. cascade.detectMultiScale( processImage, platesRegions,
  20. 1.1, 3, cv::CASCADE_SCALE_IMAGE,minSize,maxSize);
  21. for(auto plate:platesRegions)
  22. {
  23. // extend rects
  24. // x -= w * 0.14
  25. // w += w * 0.28
  26. // y -= h * 0.6
  27. // h += h * 1.1;
  28. int zeroadd_w = static_cast<int>(plate.width*0.28);
  29. int zeroadd_h = static_cast<int>(plate.height*1.2);
  30. int zeroadd_x = static_cast<int>(plate.width*0.14);
  31. int zeroadd_y = static_cast<int>(plate.height*0.6);
  32. plate.x-=zeroadd_x;
  33. plate.y-=zeroadd_y;
  34. plate.height += zeroadd_h;
  35. plate.width += zeroadd_w;
  36. cv::Mat plateImage = util::cropFromImage(InputImage,plate);
  37. PlateInfo plateInfo(plateImage,plate);
  38. plateInfos.push_back(plateInfo);
  39. }
  40. }
  41. // std::vector<pr::PlateInfo> PlateDetection::plateDetectionRough(cv::Mat InputImage,cv::Rect roi,int min_w,int max_w){
  42. // cv::Mat roi_region = util::cropFromImage(InputImage,roi);
  43. // return plateDetectionRough(roi_region,min_w,max_w);
  44. // }
  45. }//namespace pr