0) Проблема: требуется установить opencv 2.4.13 и настроить для работы в VS 2017
(в дистрибутиве OpenCV собранные бинарники для VC11, VC12 не прилинкуются в новой студии, значит надо собирать из исходников)
1) Качаем последний cmake с сайта https://cmake.org/download/
https://github.com/Kitware/CMake/releases/download/v3.18.0/cmake-3.18.0-win64-x64.msi
2) Устанавливаем cmake в каталог студии (у меня там стоял предыдущий cmake версии 3.12.0, поставленный инсталлятором),
0 просто заменяя папку CMake (если такой папки нет, то можно ставить куда угодно)
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake
3) Качаем opencv-2.4.13.exe и распаковываем в C:/opencv-2-4-13
4) Запускаем "Командная строка для разработчика VS 2017" (если CMake был поставлен в другую папку, то надо в Path прописать до неё путь)
5) Набираем
> cmake --version
Должно выдать
> cmake version 3.18.0
6) Проверяем генераторы, набираем
> cmake -G
Должно выдать полный список генераторов. Поскольку у нас VS 2017 и Win32, то там это должно быть
(за подробностями в документацию https://cmake.org/cmake/help/v3.18/generator/Visual%20Studio%2015%202017.html)
7) Переходим в каталог C:/opencv2/sources, там должен быть файл CMakeLists.txt, набираем (если хотим собрать Win32 для opencv)
> cmake . -G "Visual Studio 15 2017" -A Win32
8) В студии открыть OpenCV.sln, пересобрать проект ALL_BUILD (Win32 Debug)
9) Создать
C:\opencv-2-4-13\build\Debug\Win32\bin
C:\opencv-2-4-13\build\Debug\Win32\lib
C:\opencv-2-4-13\build\include
10) Скопировать в эти каталоги содержимое
C:\opencv-2-4-13\build\Debug\Win32\bin:
C:\opencv-2-4-13\sources\bin\Debug
C:\opencv-2-4-13\build\Debug\Win32\lib:
C:\opencv-2-4-13\sources\lib\Debug
C:\opencv-2-4-13\build\include:
C:\opencv-2-4-13\sources\include
C:\opencv-2-4-13\sources\modules\calib3d\include
C:\opencv-2-4-13\sources\modules\contrib\include
C:\opencv-2-4-13\sources\modules\photo\include
(Если прикомпиляции не будут найдены ещё какие-то файлы .h или .hpp надо их найти и прописать сюда путь до них)
11) Создать пустой проект С++, добавить новый файл main.cpp
12) Внутри файла:
#include <opencv2\opencv.hpp>
using namespace cv;
int main()
{
namedWindow("Win");
waitKey(0);
return 0;
}
13) Правой кнопкой мыши по проекту
Проект -> Свойства -> Каталоги VC++
Каталоги исполняемых файлов -> C:\opencv-2-4-13\build\Debug\Win32\bin
Включаемые каталоги -> C:\opencv-2-4-13\build\include
Каталоги библиотек -> C:\opencv-2-4-13\build\Debug\Win32\lib
Компоновщик
Общие -> Дополнительные каталоги библиотек -> C:\opencv-2-4-13\build\Debug\Win32\lib
Ввод -> Дополнительные зависимости -> указываем всё, что есть в /lib, а именно:
opencv_calib3d2413d.lib
opencv_contrib2413d.lib
opencv_core2413d.lib
opencv_features2d2413d.lib
opencv_flann2413d.lib
opencv_gpu2413d.lib
opencv_haartraining_engined.lib
opencv_highgui2413d.lib
opencv_imgproc2413d.lib
opencv_legacy2413d.lib
opencv_ml2413d.lib
opencv_nonfree2413d.lib
opencv_objdetect2413d.lib
opencv_ocl2413d.lib
opencv_photo2413d.lib
opencv_stitching2413d.lib
opencv_superres2413d.lib
opencv_ts2413d.lib
opencv_video2413d.lib
opencv_videostab2413d.lib
События сборки -> События после сборки -> Командная строка -> xcopy /y /d "C:\opencv-2-4-
13\build\Debug\Win32\bin\*.dll" "$(OutDir)"
14) Проверка
#include <opencv2\opencv.hpp>
using namespace cv;
int main()
using namespace cv;
using namespace std;
int main()
{
namedWindow("Win");
waitKey(0);
// задаём высоту и ширину картинки
int height = 620;
int width = 440;
// задаём точку для вывода текста
CvPoint pt = cvPoint(height / 4, width / 2);
// Создаёи 8-битную, 3-канальную картинку
IplImage* hw = cvCreateImage(cvSize(height, width), 8, 3);
// заливаем картинку чёрным цветом
cvSet(hw, cvScalar(0, 0, 0));
// инициализация шрифта
CvFont font;
cvInitFont(&font, CV_FONT_HERSHEY_COMPLEX, 1.0, 1.0, 0, 1, CV_AA);
// используя шрифт выводим на картинку текст
cvPutText(hw, "OpenCV Step By Step", pt, &font, CV_RGB(150, 0, 150));
// создаём окошко
cvNamedWindow("Hello World", 0);
// показываем картинку в созданном окне
cvShowImage("Hello World", hw);
// ждём нажатия клавиши
cvWaitKey(0);
// освобождаем ресурсы
cvReleaseImage(&hw);
cvDestroyWindow("Hello World");
//cout << "\r\npress any key to continue...";
//cin.get();
return 0;
}
Комментариев нет:
Отправить комментарий