【问题标题】:OpenCV ORB featuresOpenCV ORB 特性
【发布时间】:2012-12-28 04:21:30
【问题描述】:

我正在使用 ORB 特征检测器和提取器从灰度图像列表中获取特征。 问题是如果我尝试检测\提取它,我会从同一张图像中获得不同的特征 不止一次。所以以后不可能用它们来检测了。

代码:

bmp=BitmapFactory.decodeResource(getResources(),R.drawable.t1);
Utils.bitmapToMat(bmp, mat);
FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB);
detector.detect(mat, keypoints);
DescriptorExtractor extractor = DescriptorExtractor.create(DescriptorExtractor.ORB);
extractor.compute(mat, keypoints, features);

也许有人对此有所了解?

【问题讨论】:

    标签: android opencv machine-learning computer-vision


    【解决方案1】:

    这不应该是这样..您应该获得一致的性能。但是,我正在共享我的代码以在两个图像上使用 Orb 特征检测器以及 Orb Descriptor Extractor。您可以使用任何匹配器来匹配它们。希望这对您有所帮助...

    #include "iostream"
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/nonfree/nonfree.hpp>
    #include <opencv2/nonfree/features2d.hpp>
    #include <opencv2/flann/flann.hpp>
    #include <opencv2/legacy/legacy.hpp>
    #include <vector>
    
    
    using namespace cv;
    using namespace std;
    
    int main()
    {
        Mat image1,image2;
        imageA = imread("C:\\lena.jpg",0);
        imageB = imread("C:\\lena1.bmp",0);
    
        vector<KeyPoint> keypointsA,keypointsB;
        Mat descriptorsA,descriptorsB;
    
        std::vector<DMatch> matches;
    
        OrbFeatureDetector detector;
    
        OrbDescriptorExtractor extractor;
    
        BruteForceMatcher<Hamming> matcher;
    
        detector.detect(imageA,keypointsA);
        detector.detect(imageB,keypointsB);
    
        extractor.compute(imageA,keypointsA,descriptorsA);
        extractor.compute(imageB,keypointsB,descriptorsB);
    
        return 0;
     }
    

    【讨论】:

    • 是的,应该是这样。我试图为 android 项目做同样的事情,但我每次仍然获得不同的功能。也许还有一些我不知道的先决条件? - 垫类型 f.eks.
    • 你能上传你的任意两张图片吗...?
    猜你喜欢
    • 1970-01-01
    • 2012-07-05
    • 2018-04-21
    • 1970-01-01
    • 2013-10-13
    • 2011-11-06
    • 2018-01-15
    • 1970-01-01
    • 2018-04-05
    相关资源
    最近更新 更多