2017-03-07 145 views
3

我想在我的机器上安装Python3的OpenCV 3.1.0。因为我的Ubuntu 16.04,我该指南正是以下:不能使用python3安装openCV 3.1.0。 CMAKE不包括或正确链接python

http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/

不过,我在第4步麻烦,运行cmake的经过。我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的文件似乎没有下蟒段(图书馆,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 interpreter找不到opencv包。

我完成安装opencv后,我的/usr/local/lib/python3.5/文件没有site-packages目录。

任何人都可以指向正确的方向吗?我一直试图搜索如何解决这个问题的过去几个小时,但到目前为止找不到方法,所以我非常感谢任何指导。谢谢!

更新

我意识到我必须添加-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的不正确(甚至当我添加“-D PYTHON_LIBRARY =/usr/lib目录/ x86_64的Linux的找到我的Python 3库-gnu/libpython3.5m.so“到cmake选项)?

更新

我通过删除整个/ build目录,并运行cmake的一个新的目录解决了这一问题。我认为这个错误继续显示,因为cmake完成了一些缓存,但添加标志-D BUILD_opencv_python3 = yes似乎对我有用。

+0

您的PYTHON_PACKAGES_PATH拼写正确吗?最后一个文件夹是'site-packes'。它不应该是'网站包'吗? –

+0

谢谢,这确实是一个错字。不过,我通过删除整个/ build目录并再次运行cmake(使用-D BUILD_opencv_python3 = yes)来解决了我的问题。我认为它是由于某种cmake缓存造成的,所以当我删除所有内容并重新开始时,错误消失了。 – user3667125

+0

你确实回答了你的问题。如果不是问题中的更新,而是提供答案并接受它,那将会很好。 查看更多https://stackoverflow.com/help/self-answer –

回答

6

我通过删除整个/ build目录并再次运行cmake(使用-D BUILD_opencv_python3 = yes)解决了我的问题。我认为它是由于某种cmake缓存造成的,所以当我删除所有内容并重新开始时,错误消失了。

+1

我有同样的问题,这为我工作(Ubuntu 16.10,python3,与contrib Opencv3) –