2016-04-23 8 views
6

Sto cercando di costruire OpenCV 3.1.0 per la mia installazione anaconda3 e la mia generazione non riesce a:Installazione OpenCV in anaconda3 - Python.h: Nessun file o directory

[ 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. 

ho OpenCV e OpenCV -contrib clonato con le versioni 3.1.0 utilizzando git checkout 3.1.0 in entrambi e sto cercando di creare in ~/Soft/opencv/build dove ho opencv-contrib in ~/Soft/opencv-contrib. Sto usando Ubuntu GNOME 15.10 con un i7-4960X.

Il mio obiettivo principale è quello di rendere il lavoro OpenCV nella mia installazione anaconda3 e così il mio comando CMake è la seguente:

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 .. 

L'uscita del mio comando cmake è qui: http://pastebin.com/qtd1wyMb - Tutto bene per quanto mi è possibile vedere.

Ho poi corro make -j12 installare OpenCV e dopo un paio di avvertimenti funziona benissimo fino a 94%, in cui ottengo il seguente output:

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 

L'uscita completa dalla marca è qui per riferimento: http://pastebin.com/1zNgsckZ

Sembra che il mio problema è perché sto usando i percorsi anaconda3 invece dei percorsi standard python3, non è più possibile trovare Python.h. Tuttavia, quando installo usando l'installazione di python3 di sistema, non posso importare opencv in anaconda dove ne ho bisogno.

Ho python3-dev e python-dev installati, quindi Python.h dovrebbe essere sulla mia macchina. Cosa devo cambiare per fare in modo che openCV trovi Python.h?

EDIT: ho trovato che Python.h di Anaconda3 è in anaconda3/include/python3.5m/così mi sono messo PYTHON3_INCLUDE_DIR=anaconda3/include/python3.5m/ ed ora ottengo un errore diverso:

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.... 

risposta

8

ho risolto il problema. Il problema era che PYTHON3_INCLUDE_DIR era impostato su ~/anaconda3/include mentre Python.h di Anaconda si trova effettivamente all'interno di ~/anaconda3/include/python3.5m. Impostazione PYTHON3_INCLUDE_DIR=anaconda3/include/python3.5m/ corregge questo problema come meglio ritiene ora Python.h

Tuttavia, questo ha portato ad un altro problema in cui alcuni file .h quali hdf5.h e H5public.h non erano più visibili a OpenCV in quanto questi erano nella anaconda3 principale/include/directory , non nella sottocartella.

La soluzione per questo è stato quello di copiare tutti i file .h dalla directory include/ nella directory include/python3.5m(copiando il contenuto di entrambe in un'altra directory e l'impostazione che come il percorso sarebbe anche funzionare) in modo che tutti i file. I file h sono nella stessa cartella visibile al compilatore. OpenCV ora costruisce!