在anaconda3中安装openCV-Python.h:无此类文件或目录 [英] Installing openCV in anaconda3 - Python.h: No such file or directory

查看:111
本文介绍了在anaconda3中安装openCV-Python.h:无此类文件或目录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为anaconda3安装构建opencv 3.1.0,但构建失败:

I'm trying to build opencv 3.1.0 for my anaconda3 installation and my build is failing at:

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

我通过在两者中均使用git checkout 3.1.0克隆了版本3.1.0的opencv和opencv-contrib,并且我试图在~/Soft/opencv/build中的~/Soft/opencv-contrib中具有opencv-contrib的地方进行构建.我正在使用i7-4960X运行Ubuntu GNOME 15.10.

I have opencv and opencv-contrib cloned with versions 3.1.0 by using git checkout 3.1.0 in both and I am trying to build in ~/Soft/opencv/build where I have opencv-contrib in ~/Soft/opencv-contrib. I'm running Ubuntu GNOME 15.10 with an i7-4960X.

我的主要目标是使anaconda3安装中的opencv正常运行,因此我的cmake命令如下:

My main goal is to make opencv work in my anaconda3 installation and so my cmake command is the following:

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 -一切正常据我所见.

The output of my cmake command is here: http://pastebin.com/qtd1wyMb - Everything okay as far as I can see.

然后我运行make -j12来安装opencv,并在出现一些警告后可以正常运行,直到94%,我得到以下输出:

I then run make -j12 to install opencv and after a few warnings it runs fine until 94%, where I get the following 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

make的完整输出在这里供参考: http://pastebin.com/1zNgsckZ

The full output from make is here for reference: http://pastebin.com/1zNgsckZ

看来我的问题是因为我使用的是anaconda3路径,而不是标准的python3路径,因此它不再找到Python.h.但是,当我使用系统python3安装进行安装时,无法将opencv导入需要的anaconda中.

It looks like my issue is because I'm using the anaconda3 paths instead of the standard python3 paths, it can no longer find Python.h. However, when I install using the system python3 installation, I can't import opencv into anaconda where I need it.

我已经安装了python3-dev和python-dev,所以Python.h应该在我的机器上.为了使openCV找到Python.h,我需要更改什么?

I have python3-dev and python-dev installed, so Python.h should be on my machine. What do I need to change in order to make openCV find Python.h?

我发现Anaconda3的Python.h在anaconda3/include/python3.5m/中,因此我设置了PYTHON3_INCLUDE_DIR=anaconda3/include/python3.5m/,现在我得到了另一个错误:

I found that Anaconda3's Python.h is in anaconda3/include/python3.5m/ so I set PYTHON3_INCLUDE_DIR=anaconda3/include/python3.5m/ and now I get a different error:

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

推荐答案

我已修复此问题.问题是设置为~/anaconda3/include,而Anaconda的Python.h实际上位于~/anaconda3/include/python3.5m中.设置PYTHON3_INCLUDE_DIR=anaconda3/include/python3.5m/可以解决此问题,因为它现在可以看到Python.h

I fixed the issue. The problem was that PYTHON3_INCLUDE_DIR was set to ~/anaconda3/include while Anaconda's Python.h is actually inside ~/anaconda3/include/python3.5m. Setting PYTHON3_INCLUDE_DIR=anaconda3/include/python3.5m/ fixes this issue as it now sees Python.h

但是,这导致了另一个问题,其中某些.h文件(例如hdf5.hH5public.h)不再对OpenCV可见,因为这些文件位于主anaconda3/include/目录中,而不在子文件夹中.

However, this led to another problem where some .h files such as hdf5.h and H5public.h were no longer visible to OpenCV as these were in the main anaconda3/include/ directory, not in the subfolder.

解决方案是将所有.h文件从include/目录复制到include/python3.5m目录(将两个文件的内容都复制到另一个目录中,并将其设置为路径也可以),以便所有.h文件都位于编译器可见的同一文件夹中. OpenCV现在开始构建!

The solution for this was to copy all the .h files from the include/ directory into the include/python3.5m directory (copying the contents of both into another directory and setting that as the path would also work) so that all the .h files are in the same folder visible to the compiler. OpenCV now builds!

这篇关于在anaconda3中安装openCV-Python.h:无此类文件或目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆