【问题标题】:OpenCV how to create a DescriptorExtractor objectOpenCV如何创建一个DescriptorExtractor对象
【发布时间】:2016-01-24 17:51:28
【问题描述】:

我正在使用 OpenCV C++ 库,但我无法创建 DescriptorExtractor 对象。 这是我所做的:

Mat img = imread("testOrb.jpg",CV_LOAD_IMAGE_UNCHANGED);
std::vector<KeyPoint> kp;
cv::Ptr<cv::ORB> detector = cv::ORB::create();
detector->detect( img, kp )
//this part works    

DescriptorExtractor descriptorExtractor;    
Mat descriptors;
descriptorExtractor.compute(img, kp, descriptors);
//when these 3 lines are added, an error is thrown

但我有以下错误信息:

OpenCV Error: The function/feature is not implemented () in detectAndCompute, file ...

【问题讨论】:

    标签: c++ opencv opencv3.0


    【解决方案1】:

    DescriptorExtractor 是一个 abstract 类,所以你不能实例化它。它只是描述符提取器的通用接口。你可以这样做:

    Ptr<DescriptorExtractor> descriptorExtractor = ORB::create();
    Mat descriptors;
    descriptorExtractor->compute(img, kp, descriptors);
    

    注意还有FeatureDetector,这是检测关键点的通用接口,所以你可以这样做:

    std::vector<KeyPoint> kp;
    Ptr<FeatureDetector> detector = ORB::create();
    detector->detect(img, kp);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多