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.

test_segmentationFree.cpp 1.6 kB

7 years ago
7 years ago
7 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. //
  2. // Created by Jack Yu on 29/11/2017.
  3. //
  4. #include "../include/SegmentationFreeRecognizer.h"
  5. #include "../include/Pipeline.h"
  6. #include "../include/PlateInfo.h"
  7. std::string decodeResults(cv::Mat code_table,std::vector<std::string> mapping_table)
  8. {
  9. cv::MatSize mtsize = code_table.size;
  10. int sequencelength = mtsize[2];
  11. int labellength = mtsize[1];
  12. cv::transpose(code_table.reshape(1,1).reshape(1,labellength),code_table);
  13. std::string name = "";
  14. std::vector<int> seq(sequencelength);
  15. for(int i = 0 ; i < sequencelength; i++) {
  16. float *fstart = ((float *) (code_table.data) + i * labellength );
  17. int id = std::max_element(fstart,fstart+labellength) - fstart;
  18. seq[i] =id;
  19. }
  20. for(int i = 0 ; i< sequencelength ; i++)
  21. {
  22. if(seq[i]!=labellength-1 && (i==0 || seq[i]!=seq[i-1]))
  23. name+=mapping_table[seq[i]];
  24. }
  25. std::cout<<name;
  26. return name;
  27. }
  28. int main()
  29. {
  30. cv::Mat image = cv::imread("res/cache/chars_segment.jpg");
  31. // cv::transpose(image,image);
  32. // cv::resize(image,image,cv::Size(160,40));
  33. cv::imshow("xxx",image);
  34. cv::waitKey(0);
  35. pr::SegmentationFreeRecognizer recognizr("model/SegmenationFree-Inception.prototxt","model/ISegmenationFree-Inception.caffemodel");
  36. std::pair<std::string,float> res = recognizr.SegmentationFreeForSinglePlate(image,pr::CH_PLATE_CODE);
  37. std::cout<<res.first<<" "
  38. <<res.second<<std::endl;
  39. // decodeResults(plate,pr::CH_PLATE_CODE);
  40. cv::imshow("image",image);
  41. cv::waitKey(0);
  42. return 0;
  43. }