【发布时间】:2017-07-27 01:45:52
【问题描述】:
我正在尝试在我的机器上安装带有 Python3 的 OpenCV 3.1.0。因为我有 Ubuntu 16.04,所以我完全按照本指南进行操作:
http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/
但是,在运行 cmake 之后,我在第 4 步中遇到了麻烦。我的 cmake 程序的输出有这个 sn-p:
-- OpenCL:
-- Version: dynamic
-- Include path: /home/kevin/opencv-3.1.0/3rdparty/include/opencl/1.2
-- Use AMDFFT: NO
-- Use AMDBLAS: NO
--
-- Python 2:
-- Interpreter: /home/kevin/.virtualenvs/cv/bin/python (ver 3.5.2)
--
-- Python 3:
-- Interpreter: /home/kevin/.virtualenvs/cv/bin/python3 (ver 3.5.2)
--
-- Python (for build): /home/kevin/.virtualenvs/cv/bin/python
--
-- Java:
-- ant: NO
-- JNI: /usr/lib/jvm/java-8-oracle/include /usr/lib/jvm/java-8-oracle/include/linux /usr/lib/jvm/java-8-oracle/include
-- Java wrappers: NO
-- Java tests: NO
cmake 文件似乎没有正确链接 python 部分(库、numpy、packages_path)下缺少的属性。我尝试编译opencv并安装它,当我加载python3并导入cv时,它说找不到cv包。
我尝试修改 CMAKE 命令,所以我没有使用指南建议的内容,而是添加了三个参数来强制 cmake 包含缺少的 python 属性(最后三个属性是我的修改):
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
-D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
-D BUILD_EXAMPLES=ON \
-D PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so \
-D PYTHON_NUMPY_INCLUDE_DIR=~/.virtualenvs/cv/lib/python3.5/site-packages/numpy/core/include \
-D PYTHON_PACKAGES_PATH=~/.virtualenvs/cv/lib/python3.5/site-packes ..
但是,cmake 的输出仍然是相同的(它只列出解释器,没有其他 python 属性),当我尝试构建 opencv 并安装它时,我的 python 解释器找不到 opencv 包。
在我完成 opencv 安装后,我的 /usr/local/lib/python3.5/ 文件也没有站点包目录。
谁能指出我正确的方向?过去几个小时我一直在尝试搜索如何解决这个问题,但到目前为止找不到方法,所以我非常感谢任何指导。谢谢!
更新
我意识到我必须将 -D BUILD_opencv_python3=yes 添加到 cmake 命令中,以便 opencv 查找 python 库。但是,这是我从 cmake 获得的新输出:
-- Python 3:
-- Interpreter: /home/kevin/.virtualenvs/cv/bin/python (ver 3.5.2)
-- Libraries: NO
-- numpy: NO (Python3 wrappers can not be generated)
-- packages path: lib/python3.5/site-packages
知道为什么 cmake 没有正确找到我的 python 3 库(即使我在 cmake 选项中添加了“-D PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so”)?
更新
我通过删除整个 /build 目录并在新目录上运行 cmake 解决了这个问题。我认为由于 cmake 完成了一些缓存,错误继续出现,但添加标志 -D BUILD_opencv_python3=yes 似乎对我有用。
【问题讨论】:
-
您的 PYTHON_PACKAGES_PATH 拼写是否正确?最后一个文件夹是“站点包”。不应该是“站点包”吗?
-
谢谢,确实是错字。但是,我通过删除整个 /build 目录并再次运行 cmake(使用 -D BUILD_opencv_python3=yes)解决了我的问题。我认为由于 cmake 的某种缓存,它给出了一个错误,所以当我删除所有内容并重新开始时,错误就消失了。
-
您实际上回答了您的问题。如果您提供答案并接受它而不是更新问题,那就太好了。在此处查看更多信息stackoverflow.com/help/self-answer
-
是的,你是对的。我会发布一个答案并接受它。希望它能以某种方式帮助未来的开发者!
标签: python python-3.x opencv cmake opencv3.1