Помощь в использовании OpenCV — Ошибки типа: идентификатор не найден

#opencv #computer-vision

#opencv #компьютерное зрение

Вопрос:

Я новичок в OpenCV и зашел так далеко, что разработал работающие программы hello world samples, инвертирования, преобразования цвета (RGB-> оттенки серого) и т.д. Однако я застрял в программах, которые используют cvCanny, cvPyr и другие подобные детекторы функций.Был бы действительно благодарен, если бы крошечная проблема была устранена.

Я получаю сообщение об ошибке: ошибка C3861: ‘cvPyrDown’: идентификатор не найден ошибка C3861: ‘cvCanny’: идентификатор не найден

Я включил заголовки imgproc и features2d, но проблема сохраняется. Что я упускаю?

Ответ №1:

У вас правильно установлено свойство «Дополнительные входные каталоги»?

Мой, настроенный cmake, выглядит следующим образом:

 C:/OpenCV-2.2.0/release
C:/OpenCV-2.2.0/include
C:/OpenCV-2.2.0/include/opencv
C:/OpenCV-2.2.0/modules/core/include
C:/OpenCV-2.2.0/modules/imgproc/include
C:/OpenCV-2.2.0/modules/features2d/include
C:/OpenCV-2.2.0/modules/gpu/include
C:/OpenCV-2.2.0/modules/calib3d/include
C:/OpenCV-2.2.0/modules/objdetect/include
C:/OpenCV-2.2.0/modules/video/include
C:/OpenCV-2.2.0/modules/highgui/include
C:/OpenCV-2.2.0/modules/ml/include
C:/OpenCV-2.2.0/modules/legacy/include
C:/OpenCV-2.2.0/modules/contrib/include
C:/OpenCV-2.2.0/modules/flann/include
  

Кстати. CMake — хороший инструмент, если вы имеете дело с библиотеками, которые содержат много включенных файлов, например OpenCV.

Вы также можете проверить две другие вещи:

  1. После компиляции OpenCV 2.0 из исходных текстов вы создали проект «INSTALL» в решении OpenCV VS?
  2. Если вы используете заголовки c , вы можете предпочесть версию этих функций на c в пространстве имен cv:

    cv::Canny(…)

Комментарии:

1. Я скомпилировал с использованием самого CMake. Создал проект установки под OpenCV sln. была собрана успешно. Дополнительные входные каталоги в VS 2010 — у меня есть эти каталоги в списке дополнительных каталогов VC , но я получаю те же ошибки. Я не нахожу дополнительной категории «Включить каталоги». Не могли бы вы, пожалуйста, объяснить, как использовать версии функций на C ? потому что использование cv:: Canny (аргументы) выдает ошибку, что Canny не является членом cv. Спасибо за такой подробный ответ 🙂

2. чтобы использовать версию c , включите #include <opencv2/opencv.hpp>

3. это сделало это 🙂 я не верю, что я это пропустил : O . Спасибо за терпеливые ответы.

Ответ №2:

Это звучит как ошибка ссылки, а не какие-либо проблемы с включением. Вы уверены, что ссылаетесь на cv.lib?

Комментарии:

1. Я не вижу cv.lib нигде в иерархии каталогов opencv. Я использую версию OpenCV 2.2. в разделе компоновщика у меня есть следующее в списке дополнительных зависимостей, что-нибудь, что мне нужно добавить? opencv_core220d.lib,opencv_highgui220d.lib,opencv_ml220d.lib,opencv_imgproc220d.lib,

Ответ №3:

Вам нужно добавить каталог $ (OPENCV_ROOT)/lib в путь компоновщика, чтобы он знал, где искать файлы.

Из описания я предполагаю, что вы используете Visual Studio? Если это так, у вас есть два варианта для этого.

  1. Добавьте его в этот проект в разделе Проект -> Свойства -> Компоновщик -> Общие -> Дополнительные каталоги библиотеки.

  2. Добавьте его для всех проектов: Инструменты -> Параметры -> Проекты и решения -> Каталоги VC -> Файлы библиотеки. А затем добавьте туда папки.