Невозможно использовать SurfFeatureDetector в OpenCV 3.0.0

Система-

  1. Windows 8.1 64-битная машина
  2. OpenCV 3.0.0
  3. Visual Studio 12 2013 г.

Я построил openCV 3.0.0 с модулями contrib. Однако, когда я компилирую этот код, я получаю ошибки.

#include <OpenNI.h>                     //used for taking in input from xtion pro live
#include <iostream>
#include <opencv2\highgui\highgui.hpp>  
#include <opencv2\core\core.hpp>        
#include <opencv2\features2d\features2d.hpp>
#include <opencv2/features2d.hpp>
#include <opencv2/xfeatures2d.hpp>      // these are the libraries in the new location     (they contain SURF implementation)
#include <opencv2/xfeatures2d/nonfree.hpp>

using namespace std;
//using namespace openni;
using namespace cv;

int main(void)
{
    //from sample code 
    int minHessian = 400;

    SurfFeatureDetector detector(minHessian);

    return 0;
}

Ошибка-

ошибка C2065: «SurfFeatureDetector»: необъявленный идентификатор


person Chaitanya Uttarwar    schedule 11.12.2014    source источник
comment
посмотрите здесь   -  person berak    schedule 01.01.2015


Ответы (3)


Синтаксис для создания детектора функций Surf в OpenCV 3.0 отличается от версий 2.x.

Ptr<SURF> surf=SURF::create(minHessian);
std::vector<KeyPoint> keypts;
Mat desc;
surf->detectAndCompute(img,noArray(),keypts,desc);

Извиняюсь, если приведенный выше пример по-прежнему будет вызывать какие-либо ошибки, у меня нет рабочей версии для полевых испытаний.

person dvhamme    schedule 11.02.2015
comment
верно, вот пример: github.com/ Itseez/opencv_contrib/blob/master/modules/ - person Kornel; 13.02.2015
comment
Я не могу найти «xfeatures2d.hpp» внутри opencv2 для OpenCV 3.0, который я установил. Вы можете помочь? - person metsburg; 28.09.2015

Я думаю, что для SURF вы должны использовать «дополнительные» модули. Взгляните на это: https://github.com/itseez/opencv_contrib/

По сути, вам нужно скачать код (opencv_contrib). Добавьте его в список модулей в исходной папке opencv. Затем в cmake вы должны добавить путь ‹ opencv_contrib >/modules в EXTRA_MODULES_PATH. Наконец, после создания проекта с помощью cmake вы найдете xfeatured2d (я думаю, это тот, который вам нужен) в своем решении opencv, и вы сможете его создать и использовать.

person juangv    schedule 11.11.2015

В opencv3.0 он объединил всю библиотеку в opencv_world300d.lib (отладка) и opencv_world300.lib (релиз). Для этого вы можете использовать #include вместо другого включения. С другой стороны, это opencv_world310d.lib (отладка) и opencv_world310.lib (выпуск) в opencv3.1.

person Jane    schedule 12.04.2016