FeaturesFinder
来源:互联网 发布:python 小脚本实例 编辑:程序博客网 时间:2024/05/20 18:52
class CV_EXPORTS FeaturesFinder{public: virtual ~FeaturesFinder() {} void operator ()(const Mat &image, ImageFeatures &features); void operator ()(const Mat &image, ImageFeatures &features, const std::vector<cv::Rect> &rois); virtual void collectGarbage() {}protected: virtual void find(const Mat &image, ImageFeatures &features) = 0;};class CV_EXPORTS SurfFeaturesFinder : public FeaturesFinder{public: SurfFeaturesFinder(double hess_thresh = 300., int num_octaves = 3, int num_layers = 4, int num_octaves_descr = /*4*/3, int num_layers_descr = /*2*/4);private: void find(const Mat &image, ImageFeatures &features); Ptr<FeatureDetector> detector_; Ptr<DescriptorExtractor> extractor_; Ptr<Feature2D> surf;};class CV_EXPORTS OrbFeaturesFinder : public FeaturesFinder{public: OrbFeaturesFinder(Size _grid_size = Size(3,1), int nfeatures=1500, float scaleFactor=1.3f, int nlevels=5);private: void find(const Mat &image, ImageFeatures &features); Ptr<ORB> orb; Size grid_size;};#ifdef HAVE_OPENCV_GPUclass CV_EXPORTS SurfFeaturesFinderGpu : public FeaturesFinder{public: SurfFeaturesFinderGpu(double hess_thresh = 300., int num_octaves = 3, int num_layers = 4, int num_octaves_descr = 4, int num_layers_descr = 2); void collectGarbage();private: void find(const Mat &image, ImageFeatures &features); gpu::GpuMat image_; gpu::GpuMat gray_image_; gpu::SURF_GPU surf_; gpu::GpuMat keypoints_; gpu::GpuMat descriptors_; int num_octaves_, num_layers_; int num_octaves_descr_, num_layers_descr_;};#endif