Функция OpenSV SURF не реализована

Когда я пытаюсь запустить образец find_obj.cpp или любую программу find_obj.cpp SURF, я получаю следующую ошибку в командной строке при выполнении кода. Проект строится без ошибок и предупреждений. Я использую VS2011 бета, OpenCV 2.4 и Windows7.

Сообщение об ошибке:

 OpenCV Error: The function/feature is not implemented  in unknown function,file ..\..\..\src\opencv\modules\legacy\src\features2d.cpp, line 77 

Я попытался снова создать OpenCV 2.4, используя Cmake, а затем VS2011 в режиме отладки, а затем добавил пути lib в IDE, но все равно никакого результата.

Как я могу это исправить?

  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  using namespace std; using namespace cv; int main() { cv::initModule_nonfree();//THIS LINE IS IMPORTANT IplImage *image1 = cvLoadImage("C:\\SURF\\1.jpg"); IplImage *image2 = cvLoadImage("C:\\SURF\\2.jpg"); CvMemStorage* memoryBlock = cvCreateMemStorage(); CvSeq* image1KeyPoints; CvSeq* image1Descriptors; CvSeq* image2KeyPoints; CvSeq* image2Descriptors; // Only values with a hessian greater than 500 are considered for keypoints CvSURFParams params = cvSURFParams(500, 1); cvExtractSURF(image1, 0, &image1KeyPoints, &image1Descriptors, memoryBlock, params); cvExtractSURF(image2, 0, &image2KeyPoints, &image2Descriptors, memoryBlock, params); return 0; } 

Из этого ответа (почему бы вам не задать свой вопрос перед тем, как спросить?):

Код SIFT и SURF был перемещен в OpenCV v2.4 на новый модуль, называемый nonfree . Убедитесь, что вы связываете (DLL в Windlows) с ним. В linux эта библиотека называется libopencv_nonfree.so .

Это не ошибка. SURF находится в несвободном модуле. Чтобы использовать его, вы должны инициализировать незанятый модуль:

  #include  ... cv::initModule_nonfree(); 

Недавно я изучаю SURF. По этому вопросу вы можете добавить opencv_nonfree240d.lib и opencv_nonfree240.lib в путь к вашему проекту.

Для ubuntu сценарий на https://help.ubuntu.com/community/OpenCV можно изменить для использования без использования серфинга / просеивания, добавив

libopencv_nonfree

до конца команды sudo apt-get и

-D BUILD_opencv_nonfree = ON

до конца команды cmake. Это помогло мне после удаления всего, что я мог найти, с opencv из программного центра. Кстати, в программном центре также была открытая неохраняемая библиотека «libopencv-nonfree2.4», которая, похоже, не помогала. Я не являюсь экспертом в таких материалах, поэтому я не знаю, соответствует ли то, что я сделал, на 100%, но оно позволяет использовать такие команды, как

surf = cv2.SURF (400)

а также

keypoints = surfDetector.detect (im)

для запуска, который ранее не был (первый вызвал ошибку типа «не найден», а второй вызвал segfault).

Версия opencv.sh, которая позволила мне использовать беспроволочный серфинг / просеивание, вставленный в http://pastebin.com/sQzDdx5i
Версия, которая сейчас работает, – opencv-2.4.9, но, возможно, это будет работать для других версий, поскольку сценарий кажется несколько агностическим, как и имена lib.

  • Совместное использование предварительно скомпилированных заголовков между проектами в Visual Studio
  • Экспорт функций из DLL с помощью dllexport
  • Ошибка Weird MSC 8.0: «Значение ESP не было должным образом сохранено в вызове функции ...»
  • необходимо вызвать функцию с периодическими временными интервалами в c ++
  • Поддержка Visual Studio для новых стандартов C / C ++?
  • Unistalled C ++ Redistributables в Windows Vista
  • Что такое «выражение SFINAE»?
  • Необычное «предупреждение LNK4042» Visual Studio 2010,
  • Разница в производительности между MSVC и GCC для высоко оптимизированного матричного кода
  • Почему происходит сбой этой программы: передача std :: string между DLL
  • Как скомпилировать коммутатор в Visual C ++ и насколько он оптимизирован и быстро?
  • Interesting Posts

    Как суммировать все поля в дополнительном документе MongoDB?

    Изменение размера значка для JButton в Java?

    Почему ++ считается l-значением, но i ++ – нет?

    Как указать вручную установленные пакеты программного обеспечения в Ubuntu?

    Windows 7 зимует самостоятельно

    Как изменить цвет значка гамбургера в ящике для рисования материалов

    Windows XP не показывает экран входа в систему после открытия крышки ноутбука

    Дизайн пользовательского интерфейса Blackberry – настраиваемый пользовательский интерфейс?

    iPhone SDK: как вы загружаете видеофайлы в Справочник документов, а затем воспроизводите их?

    Нарисуйте 3D-векторы

    Почему gulp.src не нравится передавать массив полных путей к файлам?

    Как удалить подстроку из данной строки?

    Как я могу допустить, что rbind () не станет очень медленным, поскольку размер фреймворка увеличивается?

    Обнаруживать пользователя, вставляя строку или столбец в электронную таблицу google и реагируя в скрипте

    Рассчитать общее количество дней за определенный месяц

    Давайте будем гением компьютера.