2016-04-23 229 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现在构建!

相关问题