Как подключить opencv к visual studio 2019
Я только что установил openCV ver. 3.00 бета на моем компьютере, и я пытаюсь протестировать его с VS2013. Я следовал краткому руководству по началу работы:
1) Установка для окон , используя библиотеки предварительной сборки.
2) OpenCV внутри Microsoft VS , используя локальный метод и x64/vc12 каталог для библиотек.
В результате их пример (указанный в ссылке № 2) выдал ошибку:
Насколько я понимаю, моя программа может видеть библиотеки openCV, но по какой-то причине не может их открыть. Пожалуйста помоги.
Обновление: попытался сделать то, что было рекомендовано в первых четырех комментариях, но пока безрезультатно. Поэтому я выложу здесь полную информацию:
Проект: CUDA 6.5 (мне нужно работать с CUDA).
Исходный файл: Source.cpp
Режим: отладка, х64.
Переменные окружающей среды:
Поэтому я не могу собрать проект x64 по какой-то причине. Ошибка такая же.
Решение
К сожалению, это решение не сработало для меня.
Я сделал это, добавив в качестве дополнительных зависимостей (Linker -> Input -> Additional Dependencies 🙂 только те библиотеки, которые находятся в моей папке $ (OPENCV_DIR) \ lib. А именно: opencv_ts300d.lib; opencv_world300d.lib.
Другие решения
После долгого времени разных попыток я нашел ответ Вот . За x64 Проект, в дополнение к тому, что я сделал выше, вы должны:
1) Перезагрузите компьютер после установки переменных среды. Переменная пути не была обновлена на моем компьютере без перезагрузки.
2) В дополнение к библиотекам, добавленным выше, вы должны добавить (хотя, для этого примера некоторые из них могут не использоваться):
Изменить: мне недавно пришлось установить его снова на новый компьютер. Как указал user1060873, вы должны добавлять только библиотеки, расположенные в вашей папке $ OPENCV $ / lib. Например, на моем компьютере это C:\opencv\build\x64\vc12\lib , Обратите внимание, что для режима отладки вы должны добавить opencv_world310d.lib и для выпуска opencv_world310.lib
Я тоже сталкиваюсь с той же проблемой. Я использую win7 x64 с VS2015 и OpenCV 3.2
После нескольких часов борьбы я наконец-то узнал ответ. Каждая версия не одинакова, и могут быть некоторые различия. Так вот что я сделал:
- Найдите, где находятся ваши библиотеки для Дополнительной библиотеки, она расположена на $OPENCV$/lib папка
- ТОЛЬКО ставь те это $OPENCV$/lib папка в Дополнительную библиотеку ( Project properties, Configuration Properties, Linker, Input ). В моем случае я положил opencv_world300d.lib (в соответствии с официальным руководством, которое не актуально!) в мою дополнительную библиотеку. Но после того, как я проверяю папку библиотеки, есть opencv_world320d.lib поэтому вместо 300 пишу 320.
Решил эту проблему, сняв флажок «наследовать от родительского или проекта по умолчанию» под Linker-> Input-> Additional Dependencies
В данной статье речь пойдет о сборке и установке OpenCV 4 для C/C++, Python 2 и Python 3 из исходных файлов с дополнительными модулями CUDA 10 на ОС Windows.
Я постарался включить сюда все тонкости и нюансы, с которыми можно столкнуться в ходе установки, и про которые не написано в официальном мануале.
Сборка тестировалась для:
- Windows 8.1 + Visual Studio 2017 + Python 2/3 + CUDA 10.0 + GeForce 840m
- Windows 10 + Visual Studio 2019 + Python 2/3 + CUDA 10.0 + GeForce GTX 1060
Что потребуется для установки
В моей сборке использовались следующие инструменты:
- CMake 3.15
- MS Visual Studio 2019 64-бит + средства CMake С++ для Windows
- Python 3.7.3 64-бит + NumPy 64-бит
- Python 2.7.16 64-бит + NumPy 64-бит
- CUDA 10.0
- CuDNN 7.6.2
- OpenCV 4.1.1 и OpenCV-contrib-4.1.1
Установка
Так как установка производится через консольные команды, то следует внимательно и аккуратно выполнять все шаги. Также, при необходимости, меняйте установочные пути на свои.
Для начала необходимо установить требуемое ПО, причем Visual Studio должна быть установлена до CUDA:
Далее загружаем архивы исходников opencv-4.1.1 и opencv-contrib-4.1.1 в желаемое место (в моем случае это C:\OpenCV\).
Создаем папку build/ внутри opencv-4.1.1.
Далее сгенерируем файлы сборки с помощью cmake. Мы будем использовать консольный вариант cmake, так как cmake-gui путает типы некоторых переменных (например, OPENCV_PYTHON3_VERSION) и, как следствие, неправильно генерирует файлы.
Открываем консоль по пути C:\OpenCV\ и прописываем переменные.
Примечание. Для Visual Studio 2017 генератор пишется как «Visual Studio 15 2017 Win64» и без флага -A.
Также можно явно указать питоновские библиотеки для python 2 и python 3 на случай, если сборщик не сможет найти их автоматически.
Примечание. Обратите внимание на то, что библиотека NumPy должна быть той же разрядности, что и OpenCV. Проверить это легко:
Выполняем генерацию файлов сборки с помощью длинной команды ниже. При неудачной генерации или наличии ошибок после выполнения команды, повторную генерацию следует производить вычистив все файлы в build/ и .cache/.
- BUILD_opencv_world – необязательный модуль, содержащий копии всех выбранных в ходе установки библиотек. Удобен при разработке на C++, так как вместо подключения кучи зависимостей opencv можно подключить одну зависимость opencv_world411.lib в проект
- INSTALL_EXAMPLES/INSTALL_TESTS – установка примеров/тестов кода opencv
- CUDA_FAST_MATH, WITH_CUBLAS – дополнительные модули для CUDA, призванные ускорить вычисления
- CUDA_ARCH_PTX – версия PTX инструкций для улучшения производительности вычислений
- OPENCV_EXTRA_MODULES_PATH – путь до дополнительных модулей из opencv-contrib (обязательно для CUDA)
- BUILD_PROTOBUF – для работы некоторых модулей opencv необходим Protobuf (сборщик opencv в любом случае поставит BUILD_PROTOBUF=ON)
Спустя примерно 10 минут в консоле должна появиться информация о сборке и завершающие строки «Configuring done» и «Generating done». Проверяем всю информацию, особенно разделы NVIDIA CUDA, Python 2, Python 3.
Далее собираем решение. На сборку может уйти несколько часов в зависимости от вашего процессора и версии Visual Studio.
После успешной установки создаем системную переменную OPENCV_DIR со значением C:\OpenCV\opencv-4.1.1\build\install\x64\vc15\bin и также добавляем ее в PATH.
Проверим работоспособность OpenCV с модулем CUDA на простом примере умножения матриц.
- Установить тип сборки Release/x64 (для Debug следует собрать OpenCV с флагом Debug)
- Project Properties → C/C++ → General → Добавить строку «C:\OpenCV\opencv-4.1.1\build\install\include» в Additional Include Directories
- Project Properties → Linker → General → Добавить строку « C:\OpenCV\opencv-4.1.1\build\install\x64\vc16\lib» в Additional Library Directories
- Project Properties → Linker → General → Добавить «;opencv_world411.lib» («;opencv_world411d.lib» для Debug) в конец Additional Dependencies
Пример на Python 3
Вывод в консоли
Пример на C++
Вывод в консоли
Удаление
Чтобы удалить OpenCV, нужно выполнить команду.
и удалить системную переменную OPENCV_DIR и убрать путь до OpenCV из PATH.
Заключение
В статье мы рассмотрели установку OpenCV 4 для ОС Windows 10. Данный алгоритм тестировался на Windows 8.1 и Windows 10, но, в теории, может собираться и на Windows 7. За дополнительной информацией можно обратиться к списку источников ниже.
Прежде всего, создадим новое Решение (Solution), в которое включим первый Проект (Project) данной лабораторной работы. Последовательно выполните следующие шаги:
- Запустите приложение Microsoft Visual Studio 2010.
- В меню File выполните команду NewProject….
- Как показано на рис. 6.11, в диалоговом окне New Project в типах проекта выберите Win32, в шаблонах Win32 Console Application, в поле Name введите название проекта (для каждого приложения будет использовано свое название), в поле Solution Name – название решения 01_OpenCV, в поле Location укажите путь к папке с лабораторными работами. Нажмите OK.
Рис. 6.11. Создание решения для лабораторной работы
Далее создадим заготовку функции main() с параметрами командной строки. Как правило, в разрабатываемых приложениях в качестве параметров будет приниматься название изображения или видео, а также параметры тех или иных алгоритмов.
3.2. Настройка свойств проекта
Процесс настройки свойств проекта сводится к выполнению трех действий:
Рис. 6.12. Окно свойств проекта для установки путей до заголовочных файлов подключаемых библиотек
Рис. 6.13. Окно свойств проекта для установки путей до подключаемых библиотек
Рис. 6.14. Окно свойств проекта для установки списка подключаемых библиотек
3.3. Подключение заголовочных файлов в исходном коде приложения
Чтобы использовать функции библиотеки OpenCV при разработке собственных приложений, достаточно подключить заголовочный файл opencv.hpp , содержащий подключение большинства установленных модулей библиотеки, и пространство имен cv , в которое заключены все функции библиотеки.
Если заранее известно, что в процессе разработки будет использован функционал конкретного набора модулей, то можно подключить только заголовочные файлы соответствующих модулей, например:
3.4. Компиляция и запуск программы. Возможные проблемы и пути их решения
Чтобы протестировать корректность настроек, подключите заголовочные файлы библиотеки OpenCV в файл main.cpp в соответствии с указаниями раздела 3.3 и скомпилируйте программу посредством нажатия клавиши F7, или используя пункт Build главного меню.
В процессе компиляции могут возникнуть следующие проблемы:
- Ошибка открытия заголовочного файла. Примерный текст ошибки приведен ниже. Суть проблемы состоит в том, что указаны неправильные пути до подключаемых заголовочных файлов библиотеки. Решение – проверить в настройках проекта корректность путей до заголовочных файлов (см. указания раздела 3.2).
Когда программа скомпилировалась, запустите ее. Для этого можно нажать сочетание клавиш Ctrl+F5, либо воспользоваться пунктом Start Without Debugging главного меню. При попытке запуска может возникнуть ошибка, показанная на рисунке (рис. 6.15).
Проблема в том, что при исполнении выполняется поиск dll-файлов библиотеки OpenCV, и среда не находит указанные бинарные файлы. Существует два варианта решения данной проблемы:
- Задать в переменной окружения PATH пути до dll-файлов библиотеки OpenCV. В зависимости от способа установки библиотеки пути необходимо указать тот или иной путь (см. разделы 2.2 или 2.3).
- Скопировать указанный dll-файл к исполняемым файлам программы. Очевидно, что такой dll-файл будет не единственный, поэтому требуется последовательно копировать запрашиваемые файлы. Заметим, что если библиотека OpenCV собрана с поддержкой параллелизма, то также потребуется скопировать dll-файлы библиотеки Intel Threading Building Blocks ( tbb_debug.dll, tbbmalloc_debug.dll или tbb.dll, tbbmalloc.dll ), при условии, что TBB не установлена на рабочей машине, либо переменная окружения PATH не содержит путь до dll-файлов, входящих в ее состав.
Вопросы и ответы
При прохождении теста 1 в нем оказались вопросы, который во-первых в 1 лекции не рассматривались, во-вторых, оказалось, что вопрос был рассмаотрен в самостоятельно работе №2. Это значит, что их нужно выполнить перед прохождением теста? или это ошибка?
В описании говорится, что он "делает изображение более чётким, потому что, как видно из конструкции фильтра, в однородных частях изображение не изменяется, а в местах изменения яркости это изменение усиливается".
Что вижу я в конструкции фильтра (скорее всего ошибочно): F(x, y) = 2 * I(x, y) - 1/9 I(x, y) = 17/9 * I(x, y), где F(x, y) - яркость отфильтрованного пикселя, а I(x, y) - яркость исходного пикселя с координатами (x, y). Что означает обычное повышение яркости изображения, при этом без учета соседних пикселей (так как их множители равны 0).
Объясните, пожалуйста, как данный фильтр может повышать четкость изображения?
OpenCV (англ. Open Source Computer Vision Library , библиотека компьютерного зрения с открытым исходным кодом) — библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом.
Загружаю OpenCV-3.4.3-vc14-vc15 для Windows (у меня на компьютере Windows 10)
Тестирование OpenCV проводил для Visual Studio 2015, которая на тот момент была установлена у меня на компьютере. Возможна ли работа OpenCV 3.4.3-vc14-vc15 с другими версиями Visual Studio утверждать не берусь, смущают суффиксы в названии OpenCV 3.4.3-vc14-vc15 .
Распаковываю OpenCV в корень диска С. Для этого запускается файл O penCV-3.4.3_vc14_vc15.exe и указывается директория.
Перед запуском 3.4.3_vc14_vc15.exe директорию opencv создавать не нужно. Она создается автоматически при распаковке.
Запускаю Visual Studio и создаю проект консольного приложения: File -> New -> Project -> Visual C++ -> Win32 -> Win32 Consol Application -> Next -> Empty Project -> Finish.
Устанавливаю платформу к x64:
Добавляю в проект файл main.cpp , пока ничего в него не записываю.
Выполняю Right click на имени проекта в окне Solution Explorer и в контекстном меню перехожу к вкладке “Properties”.
- C/C++ -> General -> Additional Include Directories -> C:\opencv\build\include
- Linker -> General -> Additional Library Directories -> C:\opencv\build\x64\vc14\lib
- Linker -> Input -> Additional Dependencies -> opencv_world343.lib;opencv_world343d.lib;
Обратите внимание, что цифры в имени файлов opencv_world343.lib и opencv_world343d.lib соответствуют цифрам в имени версии OpenCV 3.4.3-vc14-vc15. Например, для версии OpenCV 3.4.1-vc14-vc15 нужно ссылаться в установках проекта уже на файлы opencv_world341.lib и opencv_world341d.lib.
Копирую и вставляю код в файл main.cpp
Программа выделяет контуры на изображении методом Canny (Canny Edge Detection).
Для запуска приложения необходимо поместить файл lena.jpg (скачать lena.zip) в директорию проекта, где находится исходный файл (main.cpp).
Программа выделяет лицо на изображении, используя классификатор Haar-Cascade.
При запуске программа выдавала ошибку, если в установках проекта было Debug. Поменял на Release, запуск успешный.
Читайте также: