相关疑难解决方法(0)

OpenCV 3中的FLANN错误

我正在运行Ubuntu 14.04.我试图用openCV 3运行FLANN,但是我收到错误.

通过使用AKAZE和ORB尝试下面的所有内容,但是从我尝试使用ORB的代码.

我使用ORB来查找描述符和关键点.

  Ptr<ORB> detector = ORB::create();

  std::vector<KeyPoint> keypoints_1, keypoints_2;
  Mat descriptors_1, descriptors_2;

  detector->detectAndCompute( img_1, noArray(), keypoints_1, descriptors_1 );
  detector->detectAndCompute( img_2, noArray(), keypoints_2, descriptors_2 );
Run Code Online (Sandbox Code Playgroud)

使用ORB后,我使用以下代码查找匹配项:

  FlannBasedMatcher matcher;
  std::vector<DMatch> matches;
  matcher.match(descriptors_1, descriptors_2, matches);
Run Code Online (Sandbox Code Playgroud)

代码构建良好和一切.当我运行代码时,我收到此错误:

OpenCV Error: Unsupported format or combination of formats (type=0
) in buildIndex_, file /home/jim/opencv/modules/flann/src/miniflann.cpp, line 315
terminate called after throwing an instance of 'cv::Exception'
  what():  /home/jim/opencv/modules/flann/src/miniflann.cpp:315: error: (-210) type=0
 in function buildIndex_

Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么?这是OpenCV 3处于BETA状态的问题吗?是否有替代FLANN(BFMatcher除外)

c++ opencv orb flann

12
推荐指数
2
解决办法
9765
查看次数

二进制特征和局部敏感哈希(LSH)

我正在研究FLANN,一个用于近似最近邻搜索的库.

对于LSH方法,它们表示一个对象(搜索空间中的点),作为unsigned int的数组.我不确定他们为什么这样做,并且不能简单地将一个点表示为双数组(这将代表多维向量空间中的一个点).也许是因为LSH用于二进制功能?在这种情况下,有人可以分享更多关于unsigned int的可能用途吗?为什么unsigned int如果每个功能只需要0和1?

谢谢

machine-learning nearest-neighbor computer-vision

7
推荐指数
1
解决办法
2741
查看次数

OpenCV - 将FLANN与ORB描述符一起使用以匹配要素

我正在使用OpenCV 3.2

我试图使用FLANN以比蛮力更快的方式匹配功能描述符.

// Ratio to the second neighbor to consider a good match.
#define RATIO    0.75

void matchFeatures(const cv::Mat &query, const cv::Mat &target,
                   std::vector<cv::DMatch> &goodMatches) {
    std::vector<std::vector<cv::DMatch>> matches;
    cv::Ptr<cv::FlannBasedMatcher> matcher = cv::FlannBasedMatcher::create();
    // Find 2 best matches for each descriptor to make later the second neighbor test.
    matcher->knnMatch(query, target, matches, 2);
    // Second neighbor ratio test.
    for (unsigned int i = 0; i < matches.size(); ++i) {
        if (matches[i][0].distance < matches[i][1].distance * RATIO)
            goodMatches.push_back(matches[i][0]);
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码使用SURF和SIFT描述符,但不使用ORB.

OpenCV Error: …
Run Code Online (Sandbox Code Playgroud)

c++ opencv orb flann feature-descriptor

4
推荐指数
2
解决办法
9989
查看次数

如何使用opencv 2.4.9获得有效的ORB结果?

int method = 0;

std::vector<cv::KeyPoint> keypoints_object, keypoints_scene;
cv::Mat descriptors_object, descriptors_scene;

cv::ORB orb;

int minHessian = 500;
//cv::OrbFeatureDetector detector(500);
//ORB orb(25, 1.0f, 2, 10, 0, 2, 0, 10);
cv::OrbFeatureDetector detector(25, 1.0f, 2, 10, 0, 2, 0, 10);
//cv::OrbFeatureDetector detector(500,1.20000004768,8,31,0,2,ORB::HARRIS_SCORE,31);
cv::OrbDescriptorExtractor extractor;

//-- object
if( method == 0 ) { //-- ORB
    orb.detect(img_object, keypoints_object);
    //cv::drawKeypoints(img_object, keypoints_object, img_object, cv::Scalar(0,255,255));
    //cv::imshow("template", img_object);

    orb.compute(img_object, keypoints_object, descriptors_object);
} else { //-- SURF test
    detector.detect(img_object, keypoints_object);
    extractor.compute(img_object, keypoints_object, descriptors_object);
}
// http://stackoverflow.com/a/11798593
//if(descriptors_object.type() != CV_32F)
//    descriptors_object.convertTo(descriptors_object, …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing orb

3
推荐指数
1
解决办法
1万
查看次数