在anaconda3 - Python中安装openCV。h:没有这样的文件或目录。

时间:2022-03-03 10:17:19

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

我正在试图为我的anaconda3安装构建opencv 3.1.0,我的构建失败了:

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

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.

我有opencv和opencv- b,通过使用git checkout 3.1.0,在两个版本中克隆了版本3.1.0,我正在尝试在~/Soft/opencv/build中构建我的opencv- design in ~/Soft/opencv- b。我用i7-4960X运行Ubuntu GNOME 15.10。

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

我的主要目标是使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 ..

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

我的cmake命令的输出在这里:http://pastebin.com/qtd1wyMb——我能看到的一切都没问题。

I then run make -j12 to install opencv and after a few warnings it runs fine until 94%, where I get the following output:

然后,我运行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

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

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

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.

看起来我的问题是,因为我使用的是anaconda3路径而不是标准的python3路径,它不能再找到pythonh。但是,当我使用系统python3安装时,我不能将opencv导入到我需要它的地方。

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?

我安装了python3-dev和pythondev,所以Python。h应该在我的机器上。为了让openCV找到python,我需要改变什么?

EDIT: 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:

编辑:我发现了Anaconda3的Python。h在anaconda3/包含/python3.5m/所以我设置了PYTHON3_INCLUDE_DIR=anaconda3/包含/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....

1 个解决方案

#1


9  

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

我固定的问题。问题是,PYTHON3_INCLUDE_DIR被设置为~/anaconda3/包含在Anaconda的Python中。h实际上是在~/anaconda3/包含/python3.5m。设置PYTHON3_INCLUDE_DIR=anaconda3/包含/python3.5m/修复这个问题,就像它现在看到的python。

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文件,如hdf5。h和H5public。在OpenCV中,h不再可见,因为它们是在主anaconda3/include/目录中,而不是在子文件夹中。

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!

的解决方案是将所有. h文件从包括/目录到包括/ python3.5m目录(内容复制到另一个目录,并设置路径也行),以便所有. h文件在同一个文件夹可见编译器。OpenCV现在构建!

#1


9  

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

我固定的问题。问题是,PYTHON3_INCLUDE_DIR被设置为~/anaconda3/包含在Anaconda的Python中。h实际上是在~/anaconda3/包含/python3.5m。设置PYTHON3_INCLUDE_DIR=anaconda3/包含/python3.5m/修复这个问题,就像它现在看到的python。

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文件,如hdf5。h和H5public。在OpenCV中,h不再可见,因为它们是在主anaconda3/include/目录中,而不是在子文件夹中。

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!

的解决方案是将所有. h文件从包括/目录到包括/ python3.5m目录(内容复制到另一个目录,并设置路径也行),以便所有. h文件在同一个文件夹可见编译器。OpenCV现在构建!