【问题标题】:OpenCV descriptor removes keypointOpenCV 描述符删除关键点
【发布时间】:2012-12-30 13:11:22
【问题描述】:

OpenCV 2.4 具有检测器和描述符。我正在为很多图像创建关键点,问题是检测器获取了关键点,但描述符有时会将它们全部删除。

  • 如何禁止描述符删除点?
  • 有没有办法增强关键点,使它们不被删除?

知道我尝试了很多描述符(SIFT、SURF、BRIEF 等......)

【问题讨论】:

    标签: python opencv computer-vision feature-detection keypoint


    【解决方案1】:

    你能发布一些代码吗?可以在名为 matcher_simple.cpp 的 samples/cpp 文件夹中找到 CPU 实现。你能运行它吗?我还在 OpenCV 上运行了 SURF 的 GPU 版本,使用没有问题:

    SURF_GPU surf(1000, 4, 2, false, 0.5);
    
    // detecting keypoints & computing descriptors
    GpuMat keypoints1GPU, keypoints2GPU;
    GpuMat descriptors1GPU, descriptors2GPU;
    surf(img1, GpuMat(), keypoints1GPU, descriptors1GPU);
    surf(img2, GpuMat(), keypoints2GPU, descriptors2GPU);
    
    cout << "FOUND " << keypoints1GPU.cols << " keypoints on first image" << endl;
    cout << "FOUND " << keypoints2GPU.cols << " keypoints on second image" << endl;
    
    // matching descriptors
    BruteForceMatcher_GPU< L2<float> > matcher;
    GpuMat trainIdx, distance;
    matcher.matchSingle(descriptors1GPU, descriptors2GPU, trainIdx, distance);
    
    // downloading results
    vector<KeyPoint> keypoints1, keypoints2;
    vector<float> descriptors1, descriptors2;
    vector<DMatch> matches;
    surf.downloadKeypoints(keypoints1GPU, keypoints1);
    surf.downloadKeypoints(keypoints2GPU, keypoints2);
    surf.downloadDescriptors(descriptors1GPU, descriptors1);
    surf.downloadDescriptors(descriptors2GPU, descriptors2);
    BruteForceMatcher_GPU< L2<float> >::matchDownload(trainIdx, distance, matches);
    
    // drawing the results
    Mat img_matches, image1, image2;
    img1.download(image1);
    img2.download(image2);
    drawMatches(image1, keypoints1, image2, keypoints2, matches, img_matches);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多