2017-03-28 17 views
5

Próbuję skompilować OpenCV 3.2 z wkładów z następującymi poleceniami:Ubuntu OpenCV nie kompilacji

1. 
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=/usr/local/ -DOPENCV_EXTRA_MODULES_PATH=/home/matteo/Desktop/Xilinx/OpenCV/source/opencv_contrib/modules/ /home/matteo/Desktop/Xilinx/OpenCV/source/opencv-3.2.0/ 
2. 
make -j7 # runs 7 jobs in parallel 
3. 
sudo make install 

Czy możesz wyjaśnić, dlaczego mam

... 
........ 
........... 
........................ 
-- VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file 
-- Caffe: NO 
-- Protobuf: NO 
-- Glog: NO 
-- Downloading ... 
CMake Error at cmake/OpenCVUtils.cmake:1043 (file): 
    file DOWNLOAD cannot open file for write. 
Call Stack (most recent call first): 
    ../opencv_contrib/modules/dnn/cmake/OpenCVFindLibProtobuf.cmake:32 (ocv_download) 
    ../opencv_contrib/modules/dnn/CMakeLists.txt:5 (include) 


CMake Error at cmake/OpenCVUtils.cmake:1047 (message): 
    Failed to download . Status= 
Call Stack (most recent call first): 
    ../opencv_contrib/modules/dnn/cmake/OpenCVFindLibProtobuf.cmake:32 (ocv_download) 
    ../opencv_contrib/modules/dnn/CMakeLists.txt:5 (include) 


-- Configuring incomplete, errors occurred! 

pracuję z Ubuntu 16.04. Miałem już OpenCV w systemie: może uniosłem go w niewłaściwy sposób? Pamiętam, żeby skompilować OpenCV 3.2 za pomocą tego samego polecenia, które zostało użyte powyżej.

+0

Otrzymuję ten sam problem, aktualizując dzisiaj wersję 3.1. Zrobiłem git pull na opencv_contrib. Zastanawiam się, czy to może być problem z tym repo? – marcman

+0

Mogę skompilować go dobrze bez modułu contrib – marcman

Odpowiedz

8

Musisz mieć pasujące wersje opencv_contrib i samego opencv.

Pod githubem opencv przejdź do OpenCV releases i pobierz 3.2.0 (powinien być taki sam w gałęzi master).

Teraz przejdź do https://github.com/opencv/opencv_contrib/releases i pobierz 3.2.0. Wtedy będziesz mieć obie wersje pasujące.

Następnie wszystkie polecenia cmake znajdujące się w pliku README.md w gałęzi master opencv_contrib powinny działać poprawnie.

0

Istnieje prawy konflikt w folderze kompilacji (może wynikać z poprzedniego sudo make install). Nie pamiętam, jak to naprawiłem, ale możesz spróbować rekursywnie chown do folderów źródłowych i kompilacji (lub chmod do 777).

6

Otrzymuję ten sam błąd, dokładnie ten błąd, wokół protobuf. Jest też inny błąd w module xfeatures2d, jeśli usuniesz moduły dnn (aby nie zostały skonfigurowane/zbudowane). Mój problem polega na tym, że potrzebuję "niewolnego" modułu xfeatures2d. :(

Problem wydaje się być w opencv_contrib, w modułach DNN i xfeatures2d, ale nie jestem pewien, jak to naprawić. Wezwanie do ocv_download wydaje się mieć pustych wejść, choć dnn i cmake plików xakedd2d przekazuje argumenty.Nie jestem nawet początkującym z cmake, więc nie jestem pewien, jak rozwiązywać problemy dalej.

Otrzymuję ten błąd zarówno na Mac konfiguracji XCode i konfiguracji systemu Windows dla Visual Studio , używając najnowszej wersji cmake-gui, 3.8.0-rc3.


EDIT: Myślę, że znalazłem problem. Otworzyłem issue in the opencv_contrib github. W plikach cmake dnn i xfeatures2d jest wywoływane ocv_download, który jako pierwszy parametr używa FILENAME, ale zamiast tego powinien używać PACKAGE. Kiedy zmieniłem parametry na PACKAGE, CMake pomyślnie skonfigurował opencv z modułami opencv_contrib.

Mam nadzieję, że to pomoże! :)

5

Nie może używać tej samej wersji OpenCV i opencv_contrib

https://github.com/opencv/opencv_contrib/archive/ <version> .zip https://github.com/opencv/ OpenCV/archiwum/<version> .zip

jak master lub 3.2.0

+0

uszkodzone łącze - zaktualizowany link do contrib jest https://github.com/opencv/opencv_contrib/releases (i https://github.com/opencv/opencv/releases for noncontrib) –

3

KRÓTKI

Musisz mieć tę samą wersję w opencv i opencv_contrib (.../opencv_contrib/modules/... należy do niezależnego repozytorium).

Albo to samo wydanie, albo ostatnie zatwierdzenie w obu repozytoriach.

Sprawdź, którą wersję masz i przenieś drugą. W twoim przypadku, myślę, że musisz zmienić wersję opencv_contrib, a następnie przejść do wydania z git lub download it from github.

git checkout <number_opencv_version i.e. 3.2.0>

LONG

Chyba jak Ken Lee, że nie mają tej samej wersji w repozytoriach.

Jak Matt wspomina w opened issue, występuje problem z wywołaniem ocv_download, ponieważ wersja nie jest tą, która była używana, gdy opencv-3.1, więc nie działa, ponieważ parametr nie jest oczekiwany.

Zdarza mi się, gdy używałem opencv 3.1.0 i ostatniej wersji opencv_contrib. Możesz zmieniać pliki cmake jeden po drugim, ale łatwiej jest pobrać poprawną wersję w każdym repo.

Powiązane problemy