我正在尝试在我的机器上安装OpenCV 3.1.0和Python3。因为我有Ubuntu16.04,所以我完全遵循这个指南:
http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/
但是,在运行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部分(库、numpy、包路径)下缺少的属性。我试着编译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做了一些缓存,但是添加flag-D BUILD_opencv_python3=yes似乎对我有帮助。
我相信,这个问题是由cmake gui的内部错误引起的;OPENCV_PYTHON_VERSION变量被认为是布尔型的,而cmake脚本则将该变量视为首选PYTHON版本的占位符。因此,删除变量并以字符串数据类型的形式手动重新添加,初始值为首选的python版本。e、 克,3.7。 一旦您按下Generate,cmake将接受python模块和您填充的库,并包含变量。但是,如果需要再次按Generate键,请在不修改OPENCV_PYTHON_VERSION变量的情况下自由地执行此操作,因为cmake gui将再次将其作为布尔值返回,而插入的首选值将在内部进行维护和缓存。
上面的解决方案对我不起作用,我必须指定一大堆选项来让cmake识别python3。这就成功了:
我通过删除整个/build目录并再次运行cmake(使用-D build_opencv_python3=yes)解决了我的问题。我认为它给出了一个错误,因为cmake的某种缓存,所以当我删除所有内容并重新开始时,错误就消失了。
相关问题 更多 >
编程相关推荐