2016-04-23 11 views
6

Próbuję zbudować OpenCV 3.1.0 dla mojej instalacji anaconda3 i mój build zawodzi w:Instalacja OpenCV w anaconda3 - Python.h: Nie ma takiego pliku lub katalogu

[ 94%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o 
/home/mikel/Soft/opencv/modules/python/src2/cv2.cpp:6:20: fatal error: Python.h: No such file or directory 
compilation terminated. 

mam OpenCV i OpenCV -contrib sklonowano w wersjach 3.1.0 przy użyciu git checkout 3.1.0 w obu i próbuję zbudować w ~/Soft/opencv/build gdzie mam opencv-contrib w ~/Soft/opencv-contrib. Używam Ubuntu GNOME 15.10 z i7-4960X.

Moim głównym celem jest, aby prace OpenCV w instalacji anaconda3 a więc moje polecenie cmake jest następujący:

cmake \ 
-D CMAKE_BUILD_TYPE=RELEASE \ 
-D CMAKE_INSTALL_PREFIX=/usr/local \ 
-D INSTALL_C_EXAMPLES=OFF \ 
-D INSTALL_PYTHON_EXAMPLES=ON \ 
-D OPENCV_EXTRA_MODULES_PATH=~/Soft/opencv_contrib/modules \ 
-D PYTHON3_EXECUTABLE=/home/mikel/anaconda3/bin/python3.5 \ 
-D PYTHON3_INCLUDE_DIR=/home/mikel/anaconda3/include/ \ 
-D PYTHON3_LIBRARY=/home/mikel/anaconda3/lib/libpython3.5m.so \ 
-D PYTHON3_PACKAGES_PATH=/home/mikel/anaconda3/lib/python3.5/site-packages/ \ 
-D PYTHON3_NUMPY_INCLUDE_DIRS=/home/mikel/anaconda3/lib/python3.5/site-packages/numpy/core/include \ 
-D PYTHON_DEFAULT_AVAILABLE=/home/mikel/anaconda3/bin/python3.5 \ 
-D BUILD_EXAMPLES=ON .. 

Wyjście mój rozkaz cmake jest tutaj: http://pastebin.com/qtd1wyMb - Wszystko w porządku, jak daleko, jak mogę widzieć.

I następnie uruchomić make -j12 zainstalować OpenCV i po kilku ostrzeżeniach to działa dobrze aż 94%, gdzie pojawia się następujący komunikat:

Scanning dependencies of target opencv_python3 
[ 94%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o 
/home/mikel/Soft/opencv/modules/python/src2/cv2.cpp:6:20: fatal error: Python.h: No such file or directory 
compilation terminated. 
modules/python3/CMakeFiles/opencv_python3.dir/build.make:278: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o' failed 
make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] Error 1 
CMakeFiles/Makefile2:18929: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/all' failed 
make[1]: *** [modules/python3/CMakeFiles/opencv_python3.dir/all] Error 2 
make[1]: *** Waiting for unfinished jobs.... 
[ 94%] Building CXX object modules/stitching/CMakeFiles/opencv_perf_stitching.dir/perf/perf_main.cpp.o 
[ 94%] Built target opencv_test_optflow 
[ 94%] [ 94%] Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_registration.dir/tutorial_code/calib3d/real_time_pose_estimation/src/CsvWriter.cpp.o 
Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_detection.dir/tutorial_code/calib3d/real_time_pose_estimation/src/CsvReader.cpp.o 
[ 94%] [ 94%] Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_registration.dir/tutorial_code/calib3d/real_time_pose_estimation/src/ModelRegistration.cpp.o 
Building CXX object modules/stitching/CMakeFiles/opencv_test_stitching.dir/test/ocl/test_warpers.cpp.o 
[ 94%] Building CXX object modules/stitching/CMakeFiles/opencv_perf_stitching.dir/perf/opencl/perf_stitch.cpp.o 
Linking CXX executable ../../bin/cpp-example-bgfg_segm 
Linking CXX executable ../../bin/cpp-example-autofocus 
[ 94%] Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_detection.dir/tutorial_code/calib3d/real_time_pose_estimation/src/CsvWriter.cpp.o 
[ 94%] Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_detection.dir/tutorial_code/calib3d/real_time_pose_estimation/src/ModelRegistration.cpp.o 
[ 94%] Linking CXX executable ../../bin/opencv_test_tracking 
Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_registration.dir/tutorial_code/calib3d/real_time_pose_estimation/src/Mesh.cpp.o 
[ 94%] Built target example_bgfg_segm 
[ 94%] [ 94%] Built target example_autofocus 
Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_registration.dir/tutorial_code/calib3d/real_time_pose_estimation/src/Model.cpp.o 
[ 94%] [ 94%] Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_registration.dir/tutorial_code/calib3d/real_time_pose_estimation/src/Utils.cpp.o 
Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_registration.dir/tutorial_code/calib3d/real_time_pose_estimation/src/PnPProblem.cpp.o 
[ 94%] Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_detection.dir/tutorial_code/calib3d/real_time_pose_estimation/src/Mesh.cpp.o 
[ 94%] Built target opencv_test_tracking 
[ 94%] Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_detection.dir/tutorial_code/calib3d/real_time_pose_estimation/src/Model.cpp.o 
[ 94%] Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_detection.dir/tutorial_code/calib3d/real_time_pose_estimation/src/PnPProblem.cpp.o 
[ 94%] Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_detection.dir/tutorial_code/calib3d/real_time_pose_estimation/src/Utils.cpp.o 
[ 94%] Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_registration.dir/tutorial_code/calib3d/real_time_pose_estimation/src/RobustMatcher.cpp.o 
[ 94%] Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_detection.dir/tutorial_code/calib3d/real_time_pose_estimation/src/RobustMatcher.cpp.o 
[ 94%] Building CXX object modules/stitching/CMakeFiles/opencv_perf_stitching.dir/perf/opencl/perf_warpers.cpp.o 
Linking CXX executable ../../bin/cpp-example-3calibration 
[ 94%] Building CXX object modules/stitching/CMakeFiles/opencv_test_stitching.dir/test/test_main.cpp.o 
[ 94%] Built target example_3calibration 
Linking CXX executable ../../bin/opencv_test_stitching 
[ 94%] Built target opencv_test_stitching 
Linking CXX executable ../../bin/cpp-tutorial-pnp_registration 
[ 94%] Built target cpp-tutorial-pnp_registration 
Linking CXX executable ../../bin/cpp-tutorial-pnp_detection 
[ 94%] Built target cpp-tutorial-pnp_detection 
Linking CXX executable ../../bin/opencv_perf_stitching 
[ 94%] Built target opencv_perf_stitching 
Makefile:146: recipe for target 'all' failed 
make: *** [all] Error 2 

Pełne wyjście z make jest tutaj odniesienie: http://pastebin.com/1zNgsckZ

Wygląda na to, że mój problem polega na tym, że używam ścieżek anaconda3 zamiast standardowych ścieżek python3, nie można już znaleźć Python.h. Jednak, gdy instaluję przy użyciu instalacji python3, nie mogę zaimportować opencv do anacondy tam, gdzie jej potrzebuję.

Mam zainstalowane python3-dev i python-dev, więc Python.h powinien znajdować się na moim komputerze. Co muszę zmienić, aby openCV znalazł Python.h?

EDIT: stwierdziliśmy, że Anaconda3 za Python.h jest w anaconda3/include/python3.5m/tak ustawić PYTHON3_INCLUDE_DIR=anaconda3/include/python3.5m/ i teraz otrzymuję inny błąd:

Scanning dependencies of target opencv_python3 
Linking CXX executable ../../bin/opencv_test_optflow 
[ 91%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o 
In file included from /home/mikel/Soft/opencv/build/modules/python3/pyopencv_generated_include.h:11:0, 
       from /home/mikel/Soft/opencv/modules/python/src2/cv2.cpp:12: 
/home/mikel/Soft/opencv_contrib/modules/hdf/include/opencv2/hdf/hdf5.hpp:40:18: fatal error: hdf5.h: No such file or directory 
compilation terminated. 
modules/python3/CMakeFiles/opencv_python3.dir/build.make:278: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o' failed 
make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] Error 1 
CMakeFiles/Makefile2:18929: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/all' failed 
make[1]: *** [modules/python3/CMakeFiles/opencv_python3.dir/all] Error 2 
make[1]: *** Waiting for unfinished jobs.... 

Odpowiedz

8

Naprawiłem problem. Problem polegał na tym, że PYTHON3_INCLUDE_DIR został ustawiony na ~/anaconda3/include, podczas gdy Anakonda Python.h znajduje się wewnątrz ~/anaconda3/include/python3.5m. Ustawianie PYTHON3_INCLUDE_DIR=anaconda3/include/python3.5m/ poprawki ten problem, ponieważ teraz widzi Python.h

jednak doprowadziło to do innego problemu gdzie niektóre .h pliki takie jak hdf5.h i H5public.h nie były widoczne dla OpenCV jak były w głównej anaconda3/include/katalog , nie w podfolderze.

Rozwiązaniem tego było skopiować wszystkie pliki .h z katalogu include/ do katalogu include/python3.5m(kopiowanie zawartości zarówno do innego katalogu i ustawienie, które jako ścieżka będzie również działać) tak, że wszystkie. Pliki h znajdują się w tym samym folderze, który jest widoczny dla kompilatora. OpenCV teraz buduje!

Powiązane problemy