Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- cv::Ptr<cv::FeatureDetector> _detector = cv::FastFeatureDetector::create(_configuration.threshold,
- _configuration.nonmaxSuppression);
- cv::Ptr<cv::DescriptorExtractor> _descriptor_extractor = cv::xfeatures2d::BriefDescriptorExtractor::create();
- typedef std::map<float,cv::KeyPoint,std::greater<float> > ResponseKeypointMap;
- // keypoint buffer
- std::vector<cv::KeyPoint> keypoints;
- cv::Mat descriptors;
- // detect keypoints
- _detector->detect(rgb_image_, keypoints);
- const int keypoints_size = keypoints.size();
- if(!keypoints_size){
- std::cerr << "warning: [PointDetector] found 0 keypoints!n";
- return;
- }
- ResponseKeypointMap keypoints_map;
- for(int i=0; i < keypoints_size; ++i){
- keypoints_map.insert(std::make_pair(keypoints[i].response,keypoints[i]));
- }
- int iterations = std::min(_configuration.max_keypoints_size,keypoints_size);
- std::vector<cv::KeyPoint> filtered_keypoints;
- filtered_keypoints.resize(iterations);
- int k=0;
- for(ResponseKeypointMap::iterator it = keypoints_map.begin();
- it != keypoints_map.end();
- ++it){
- filtered_keypoints[k] = it->second;
- k++;
- if(k>=iterations)
- break;
- }
- std::cerr << "filtered keypoints size: " << filtered_keypoints.size() << std::endl;
- _descriptor_extractor->compute(rgb_image_, filtered_keypoints, descriptors);
- std::cerr << "Computed " << descriptors.rows << "x" << descriptors.cols << " descriptors" << std::endl;
Add Comment
Please, Sign In to add comment