2016-04-23 174 views
6

我試圖建立的OpenCV 3.1.0我anaconda3安裝和我的體型在失敗:在anaconda3安裝OpenCV的 - Python.h:沒有這樣的文件或目錄

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

我的OpenCV和OpenCV contrib克隆與版本3.1.0通過使用git checkout 3.1.0在兩個和我試圖建立在~/Soft/opencv/build我在哪裏有opencv-contrib ~/Soft/opencv-contrib。我用i7-4960X運行Ubuntu GNOME 15.10。

我的主要目標是使OpenCV的工作在我anaconda3安裝,所以我的cmake的命令如下:

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

我的CMake命令的輸出是在這裏:http://pastebin.com/qtd1wyMb - 一切沒關係,盡我所能看到。

我然後運行make -j12到安裝OpenCV和一些警告後運行良好,直到94%,在這裏我得到下面的輸出:

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 

從使輸出全是在這裏以供參考:http://pastebin.com/1zNgsckZ

它看起來像我的問題是因爲我使用anaconda3路徑而不是標準的python3路徑,它不能再找到Python.h。但是,當我使用系統python3安裝進行安裝時,我無法將opencv導入到需要它的anaconda中。

我已經安裝了python3-dev和python-dev,所以Python.h應該在我的機器上。爲了使openCV找到Python.h,我需要改變什麼?

編輯:我發現Anaconda3的Python.h是anaconda3 /包括/ python3.5m /所以我設置PYTHON3_INCLUDE_DIR=anaconda3/include/python3.5m/,現在我得到一個不同的錯誤:

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

回答

8

我固定的問題。問題是PYTHON3_INCLUDE_DIR被設置爲~/anaconda3/include,而Anaconda的Python.h實際上在~/anaconda3/include/python3.5m之內。設置PYTHON3_INCLUDE_DIR=anaconda3/include/python3.5m/修復了這個問題,因爲它現在看到Python.h

然而,這導致了另一個問題,即一些.h文件,如hdf5.hH5public.h不再可見OpenCV的,因爲這些人在主anaconda3/include /下, ,而不是在子文件夾中。

對此的解決方案是將所有.h文件從include/目錄複製到include/python3.5m目錄(複製兩者的內容到另一個目錄,並設置作爲路徑也將工作)讓所有的。 h文件位於編譯器可見的相同文件夾中。 OpenCV現在構建!

相關問題