Как вы компилируете OpenCV с помощью cmake? - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь скомпилировать OpenCV, чтобы в нем был модуль sift.

Я скачал CMake, используя этот учебник .

Я также скачал и распаковал opencv-4.3.0 и opencv_contrib.

Я создал пустую папку, открыл терминал и перешел к нему, используя следующую строку:

cd ~/opencvMaster/build

Затем, находясь в этой пустой папке в терминале, я запустил следующую строку:

cmake -DOPENCV_ENABLE_NONFREE:BOOL=ON -DOPENCV_EXTRA_MODULES_PATH= ~/openCVMaster/opencv_contrib-master/modules ~/openCVMaster/opencv-4.3.0

Он настроил и сгенерировал файлы. Затем я ввожу make. Получил следующую ошибку:

[ 82%] Building CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.o
~/opencvMaster/opencv_contrib-e6f32c6a69043456a806a4e802ee3ce7b7059c93/modules/xfeatures2d/src/boostdesc.cpp:654:20: fatal error: boostdesc_bgm.i: No such file or directory
           #include "boostdesc_bgm.i"
                    ^~~~~~~~~~~~~~~~~
compilation terminated.

Я последовал предложению здесь и добавил следующие файлы:

cd ~/openCVMaster/opencv_contrib-4.3.0/modules/xfeatures2d/src
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_lbgm.i >boostdesc_lbgm.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_256.i >boostdesc_binboost_256.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_128.i >boostdesc_binboost_128.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_064.i >boostdesc_binboost_064.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_hd.i >boostdesc_bgm_hd.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_bi.i >boostdesc_bgm_bi.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i >boostdesc_bgm.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_120.i > vgg_generated_120.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_64.i >vgg_generated_64.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_48.i >vgg_generated_48.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i >vgg_generated_80.i

Это был шаг вперед: не более ошибки, связанные с vgg или boostdes c. Появилась новая ошибка: opencv_contrib-master/modules/xfeatures2d/test/test_features2d.cpp:51:10: fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory

Следуя совету ай-ма здесь ) Я скачал https://github.com/opencv/opencv/tree/master/modules. После загрузки я нашел ее подпапку «features2d» и поместил ее в opencv_contrib-master/modules/xfeatures2d/test/.

По-прежнему получена ошибка -

~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_converters.cpp:2:10: fatal error: common.h: No such file or directory
 #include "common.h"

Я добавил следующее:

cd ~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp
curl wget https://raw.githubusercontent.com/ray-project/common/master/common.h > common.h

Я снова запустил make и получил следующие ошибки:

~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_converters.cpp: In function ‘void Mat_to_vector_KeyPoint(cv::Mat&, std::vector<cv::KeyPoint>&)’:
~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_converters.cpp:7:38: error: ‘LOGD’ was not declared in this scope
 #define CHECK_MAT(cond) if(!(cond)){ LOGD("FAILED: " #cond); return; }

~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_converters.cpp:14:5: note: in expansion of macro ‘CHECK_MAT’
     CHECK_MAT(mat.type()==CV_32FC(7) && mat.cols==1);
     ^~~~~~~~~
~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_converters.cpp: In function ‘void Mat_to_vector_DMatch(cv::Mat&, std::vector<cv::DMatch>&)’:
~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_converters.cpp:7:38: error: ‘LOGD’ was not declared in this scope
 #define CHECK_MAT(cond) if(!(cond)){ LOGD("FAILED: " #cond); return; }

Любые предложения приветствуются.

Ответы [ 2 ]

1 голос
/ 30 апреля 2020
# Step 1: Install VS 2017 for cmake 
 # Step 2: Install CMake

Загрузите и установите CMake v3.10.0 из https://cmake.org/download/. enter image description here

Во время установки выберите «Добавить CMake в системную PATH»

enter image description here

# step 3: install Anaconda
# step 4: Download and extract opencv-3.3.1 and opencv_contrib-3.3.1
Go to https://github.com/opencv/opencv/releases and download opencv-3.3.1 source code zip

enter image description here

Go до https://github.com/opencv/opencv_contrib/releases и загрузите opencv_contrib-3.3.1 исходный код zip enter image description here

Распакуйте оба zip-файла. Хотя вы можете хранить папки opencv и opencv_contrib где угодно, я советую вам хранить обе папки в одном каталоге. Я поместил эти две папки в каталог «Мои документы».

ПРИМЕЧАНИЕ. Далее мы будем называть путь к папке opencv-3.3.1 как OPENCV_PATH. Например, в моем случае OPENCV_PATH - это C: / Users / Vaibhaw Chandel / Documents / opencv-3.3.1

В зависимости от того, где вы сохранили папку opencv-3.3.1, этот путь будет другим.

enter image description here

Шаг 5. Создание проекта Visual Studio с использованием CMake

Запустите Cmake, в поле «Где находится исходный код» введите значение OPENCV_PATH (путь к папке opencv-3.3.1) и путь к каталогу сборки. Мы выберем каталог для сборки как OPENCV_PATH / build

enter image description here

Теперь нажмите «Настроить». Вам будет предложено разрешение на создание папки сборки. Нажмите Да enter image description here

Когда появится запрос на выбор компилятора, выберите Visual Studio 14 2015 Win64. enter image description here

Нажмите Fini sh и в следующем окне сохраните параметры по умолчанию проверенными. enter image description here

Нажмите Fini sh. Теперь CMake будет просматривать системные каталоги и генерировать make-файлы.

Шаг 5.1: Дополнительные изменения в конфигурации CMake

Мы внесем несколько изменений в конфигурацию по умолчанию, созданную CMake. Нажмите на изображения, чтобы увидеть увеличенную версию.

Проверьте «INSTALL_C_EXAMPLES» и «INSTALL_PYTHON_EXAMPLES» В флаге «OPENCV_EXTRA_MODULES_PATH» укажите путь к каталогу модулей в opencv_contrib-3.3.1. В нашем случае мы сохранили opencv_contrib-3.3.1 в папке «Документы», поэтому путь будет «C: / Users / Vaibhaw Chandel / Documents / opencv_contrib-3.3.1 / modules». Теперь нажмите «Настройка», чтобы применить эти изменения. enter image description here

При Windows 10 модуль opencv_salidity не может быть собран. Так что мы его отключим. Снимите флажок BUILD_opencv_salidity. Теперь нажмите еще раз на конфигурацию, чтобы включить это изменение.

Шаг 5.2: Добавьте Python пути для Python2 и Python3 (необязательно)

Этот раздел предназначен только для людей кто хочет сгенерировать двоичный файл OpenCV для Python2 и Python 3. Если вы собираетесь использовать только один Python 2 или 3, вам следует пропустить этот раздел.

CMake не смог найти пути для моих Python3 файлов.

enter image description here Поэтому я вручную добавил пути для Python3 enter image description here Теперь нажмите «Настроить снова». После завершения настройки выполните поиск opencv_ python в строке поиска, и BUILD_opencv_ python2 и BUILD_opencv_ python3 будут автоматически проверены. Теперь мы уверены, что двоичные файлы OpenCV для Python2 и Python 3 будут сгенерированы после компиляции. enter image description here

Шаг 5.3: Генерация файлов сборки

Если CMake может конфигурировать без каких-либо ошибок, он должен сказать «Конфигурирование выполнено». Нажмите «Генерировать».

Примечание. Каждый раз, когда вы вносите какие-либо изменения (установите / снимите флажки или измените путь) в конфигурации, созданной CMake, всегда нажимайте «Настройка и генерация».

Шаг 6: Компиляция OpenCV

Шаг 6.1: скомпилировать opencv в режиме выпуска

Открыть Windows Командная строка (cmd). Go перейти в каталог OPENCV_PATH / build и выполнить эту команду 1

cmake.exe --build . --config Release --target INSTALL

Шаг 6.2: Скомпилировать opencv в режиме отладки

Снова открыть CMake GUI, как указано в шаге 5.

Поиск «python» в поле поиска Снимите флажок INSTALL_PYTHON_EXAMPLES, BUILD_opencv_ python3 и BUILD_opencv_python2. Нажмите «Настройка». Нажмите «Создать сейчас» в windows командной строке Go, чтобы открыть каталог OPENCV_PATH / build, и выполните эту команду

1

cmake.exe --build . --config Debug --target INSTALL

Теперь, когда мы скомпилировали OpenCV, мы узнаем, как протестировать проект OpenCV с помощью CMake.

Шаг 7: Обновить переменные среды системы

Шаг 7.1: Обновить переменную среды - PATH

Шаг 7.2: Обновить переменную среды пользователя - OPENCV_DIR

0 голосов
/ 18 апреля 2020
  • Скачать opencv-4.3.0.zip и opencv_contrib-4.3.0.zip. Распаковать их.
  • Открыть opencv_contrib-4.3.0\modules. Скопируйте папку с надписью xfeatures2d. Откройте opencv-4.3.0\modules и вставьте только что скопированную папку (xfeatures2d)
  • Создайте пустую папку и назовите ее Build45.
  • Откройте cmake- gui.
  • В поле с надписью «Где создать двоичные файлы» укажите путь к файлу, представляющий вашу пустую папку (Build45)
  • В поле с надписью «Где находится исходный код» 'укажите путь к файлу, представляющий opencv-4.3.0.

enter image description here

  • Нажмите configure. Появятся варианты.
  • Введите 'free' в поле поиска и установите флажок OPENCV_ENABLE_NONFREE.
  • Введите xfeatures2d и установите флажок Build_opencv_xfeatures2d`
  • Нажмите configure еще раз. (Дважды проверьте, правильно ли вы сделали: в cmake gui есть вторая коробка, в которой указаны детали сборки. Вы должны увидеть Non-free algorithms: YES.
  • Нажмите Generate.
  • Проверьте, что папка build45 теперь заполнена вещами.
  • Откройте терминал и перейдите к папке build45 (cd ~/opencv-master/build45)
  • Тип cmake .
  • Тип make
  • ПРИМЕЧАНИЕ: * Сборка займет пару часов. Приготовьте себе чашку чая *.
  • Тип sudo make install
  • Убедитесь, что он работает: в вашем терминале, Тип python3
  • Тип import cv2
  • Тип sift = cv2.xfeatures2d.SIFT_create()
  • Вы не должны получать ошибок. Если вы получаете ошибки, могут помочь следующие инструменты устранения неполадок:
import cv2
print cv2.getBuildInformation()
import cv2
funcs = dir(cv2)
for f in funcs:
...     print(f)

Также, если вы беспокоитесь о нарушении патентов, проверьте здесь для обсуждения: https://www.reddit.com/r/computervision/comments/ba1l8g/according_to_this_the_patent_on_sift_was_due_to/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...