Guest User

Untitled

a guest
Feb 22nd, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. cv::Ptr<cv::FeatureDetector> _detector = cv::FastFeatureDetector::create(_configuration.threshold,
  2. _configuration.nonmaxSuppression);
  3.  
  4. cv::Ptr<cv::DescriptorExtractor> _descriptor_extractor = cv::xfeatures2d::BriefDescriptorExtractor::create();
  5.  
  6. typedef std::map<float,cv::KeyPoint,std::greater<float> > ResponseKeypointMap;
  7.  
  8. // keypoint buffer
  9. std::vector<cv::KeyPoint> keypoints;
  10. cv::Mat descriptors;
  11.  
  12. // detect keypoints
  13. _detector->detect(rgb_image_, keypoints);
  14.  
  15. const int keypoints_size = keypoints.size();
  16. if(!keypoints_size){
  17. std::cerr << "warning: [PointDetector] found 0 keypoints!n";
  18. return;
  19. }
  20.  
  21. ResponseKeypointMap keypoints_map;
  22. for(int i=0; i < keypoints_size; ++i){
  23. keypoints_map.insert(std::make_pair(keypoints[i].response,keypoints[i]));
  24. }
  25.  
  26. int iterations = std::min(_configuration.max_keypoints_size,keypoints_size);
  27. std::vector<cv::KeyPoint> filtered_keypoints;
  28. filtered_keypoints.resize(iterations);
  29. int k=0;
  30.  
  31. for(ResponseKeypointMap::iterator it = keypoints_map.begin();
  32. it != keypoints_map.end();
  33. ++it){
  34. filtered_keypoints[k] = it->second;
  35. k++;
  36.  
  37. if(k>=iterations)
  38. break;
  39. }
  40.  
  41. std::cerr << "filtered keypoints size: " << filtered_keypoints.size() << std::endl;
  42.  
  43. _descriptor_extractor->compute(rgb_image_, filtered_keypoints, descriptors);
  44. std::cerr << "Computed " << descriptors.rows << "x" << descriptors.cols << " descriptors" << std::endl;
Add Comment
Please, Sign In to add comment