我正试图在我的机器上安装带有
Python3的OpenCV 3.1.0.因为我有Ubuntu 16.04,所以我完全按照本指南操作:
但是,在运行cmake后,我在第4步遇到了麻烦.我的cmake程序的输出有这个片段:
-- 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部分(libraries,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/文件没有site-packages目录.
谁能指出我正确的方向?我一直在尝试搜索过去几个小时如何解决这个问题,但到目前为止找不到方法,所以我非常感谢任何指导.谢谢!
更新
我意识到我必须在cmake命令中添加-D BUILD_opencv_python3 = yes,以便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似乎对我有用.