无法在macOS上的Anaconda3 Python3.6安装OpenCV3

18
我正在尝试在macOS 10.11.6上使用Anaconda3 python 3.6安装OpenCV 3.2.0,但我找不到方法。 我的Anaconda3已安装python 3.5.2,但如果我使用"conda create -n envname python=3.x" 命令创建一个新的虚拟环境,那么我的python版本将被升级到3.x。
$ conda create -n myvenv python  
then it downloads and installs python 3.6 on the new myvenv. A simple search  
$ conda search opencv
opencv                       2.4.8                np17py27_2  defaults 

在使用OpenCV3时没有得到任何结果

$ conda search opencv3
NoPackagesFoundError: Package missing in current osx-64 channels: 
  - opencv3

安装menpo opencv3构建时会出现以下冲突:

$ conda install -c menpo opencv3
Fetching package metadata ...........
Solving package specifications: .
UnsatisfiableError: The following specifications were found to be in conflict:
  - opencv3 -> python 2.7* -> openssl 1.0.1*
  - python 3.6*
Use "conda info <package>" to see the dependencies for each package.

我尝试使用Homebrew安装,但将其与Anaconda3的Python3链接似乎很困难:

$ brew install eigen tbb
Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/eigen-3.3.1.el_capitan.bottle.tar.gz
100.0%
==> Pouring eigen-3.3.1.el_capitan.bottle.tar.gz
  /usr/local/Cellar/eigen/3.3.1: 486 files, 6.4M
==> Downloading https://homebrew.bintray.com/bottles/tbb-4.4-20161128.el_capitan.bottle.tar.gz
100.0%
==> Pouring tbb-4.4-20161128.el_capitan.bottle.tar.gz
==> Caveats
Python modules have been installed and Homebrew's site-packages is not
in your Python sys.path, so you will not be able to import the modules
this formula installed. If you plan to develop with these modules,
please run:
  mkdir -p /Users/<username>/.local/lib/python3.5/site-packages
  echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/<username>/.local/lib/python3.5/site-packages/homebrew.pth
==> Summary
  /usr/local/Cellar/tbb/4.4-20161128: 119 files, 1.9M

更多信息

$ conda info
Current conda install:
               platform : osx-64
          conda version : 4.3.8
       conda is private : False
      conda-env version : 4.3.8
    conda-build version : 2.0.2
         python version : 3.5.2.final.0
       requests version : 2.12.4
       root environment : /Users/<username>/anaconda3  (writable)
    default environment : /Users/<username>/anaconda3/envs/lesvenv
       envs directories : /Users/<username>/anaconda3/envs
          package cache : /Users/<username>/anaconda3/pkgs
           channel URLs : https://repo.continuum.io/pkgs/free/osx-64
                          https://repo.continuum.io/pkgs/free/noarch
                          https://repo.continuum.io/pkgs/r/osx-64
                          https://repo.continuum.io/pkgs/r/noarch
                          https://repo.continuum.io/pkgs/pro/osx-64
                          https://repo.continuum.io/pkgs/pro/noarch
            config file : None
           offline mode : False
             user-agent : conda/4.3.8 requests/2.12.4 CPython/3.5.2 Darwin/15.6.0 OSX/10.11.6
                UID:GID : 502:20

当代码列表为:

$ conda list
packages in environment at /Users/<username>/anaconda3/envs/lesvenv:
anaconda-client           1.6.0                    py36_0
clyent                    1.2.2                    py36_0
mkl                       2017.0.1                      0
numpy                     1.11.3                   py36_0
openssl                   1.0.2j                        0
pip                       9.0.1                    py36_1
python                    3.6.0                         0
python-dateutil           2.6.0                    py36_0
pytz                      2016.10                  py36_0
pyyaml                    3.12                     py36_0
readline                  6.2                           2
requests                  2.12.4                   py36_0
setuptools                27.2.0                   py36_0
six                       1.10.0                   py36_0
sqlite                    3.13.0                        0
tk                        8.5.18                        0
wheel                     0.29.0                   py36_0
xz                        5.2.2                         1
yaml                      0.1.6                         0
zlib                      1.2.8                         3

我的Anaconda路径是:/Users/<username>/anaconda3/bin/anaconda
我的Python 3.5.2路径是:/Users/<username>/anaconda3/bin/python
我的conda myvenv Python 3.6路径是:/Users/<username>/anaconda3/envs/myvenv/bin/python

5个回答

22

这个答案已经过时(除非你想使用旧版本的OpenCV)- 请参阅此答案

上述正确答案对我无效。

最终降低了Python版本直到问题得到解决。

conda install python=3.5 conda install -c menpo opencv3

我知道这不是一个永久性的解决方法,但是这对我有效,并且您可以在不做太多工作的情况下留在conda环境中。

该问题目前在此处引用:https://github.com/conda/conda/issues/2448

希望能对您有所帮助!


15

由于您正在使用较新版本的python3,您可能需要自己根据提供的配方构建opencv。该配方可在https://github.com/conda-forge/opencv-feedstock上找到。

另一种选择是通过以下方式创建新环境,使其具有特定版本的python3:

(root) osx:Downloads nwani$ conda list | grep python
python                    3.6.0                         0 
(root) osx:Downloads nwani$ conda create -yn opencvtest python=3.5.2
(root) osx:Downloads nwani$ source activate opencvtest
(opencvtest) osx:Downloads nwani$ conda list | grep python
python                    3.5.2                         0

OpenCV 的 3.1.0 版本构建可在 conda-forge 渠道上获得:

(root) osx:Downloads nwani$ conda search -c conda-forge --spec 'opencv=3*'
Fetching package metadata .........
opencv                       3.1.0               np110py27_0  conda-forge     
                             3.1.0               np110py34_0  conda-forge     
                             3.1.0               np110py35_0  conda-forge     
                             3.1.0               np111py27_0  conda-forge     
                             3.1.0               np111py34_0  conda-forge     
                             3.1.0               np111py35_0  conda-forge     
                             3.1.0               np110py27_1  conda-forge     
                             3.1.0               np110py34_1  conda-forge     
                             3.1.0               np110py35_1  conda-forge     
                             3.1.0               np111py27_1  conda-forge     
                             3.1.0               np111py34_1  conda-forge     
                             3.1.0               np111py35_1  conda-forge

您可以这样安装:

(opencvtest) osx:Downloads nwani$ conda install -y -c conda-forge opencv 
(opencvtest) osx:Downloads nwani$ conda list | grep -e python -e opencv
# packages in environment at /Users/nwani/Downloads/m3/envs/opencvtest:
opencv                    3.1.0               np111py35_1    conda-forge
python                    3.5.2                         0  

谢谢,我成功地在两个不同的环境中安装了menpo和conda-forge opencv3。 - Shah-G

5

我发现接受的解决方案在使用anaconda的python 3.6上无法正常工作。

因此,为了手动安装opencv并使其仍然与conda兼容:

$ cd ~
$ git clone https://github.com/opencv/opencv
$ git clone https://github.com/opencv/opencv_contrib
$ cd ~/opencv
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D PYTHON3_LIBRARY=/Users/yourusername/anaconda3/lib/libpython3.6m.dylib \
    -D PYTHON3_INCLUDE_DIR=/Users/yourusername/anaconda3/include/python3.6m \
    -D PYTHON_DEFAULT_EXECUTABLE=/Users/yourusername/anaconda3/bin/python3 \
    -D PYTHON_PACKAGES_PATH=/Users/yourusername/anaconda3/lib/python3.6/site-packages \
    -D INSTALL_C_EXAMPLES=OFF \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D BUILD_EXAMPLES=ON \
    -D BUILD_opencv_python3=ON \
    -D BUILD_opencv_python2=OFF \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules ..
$ make -j4
$ make install

此时安装应该已经顺利完成。但是,如果你进入终端仍然会收到以下信息:
$ python
import cv2
ImportError: No module named cv2

现在将此文件重命名

$ cd ~/opencv/lib/python3.6/site-packages
$ mv cv2.cpython-36m-darwin.so cv2.so

将其复制到此位置。
$ cp cv2.so /Users/yourusername/anaconda3/lib/python3.6/site-packages

现在应该可以正常工作了。

$ python
import cv2
cv2.__version__
'3.2.0-dev'

你如何将它添加到conda软件包列表中,因为一旦它们更新了,我们希望保持更新。 - Viv
请注意,这是一个为需要 Python 3.6 的人提供的临时解决方案。要进行更新,请在下载适当的 git 更改后重复上述步骤。 - Sean L

4
我在Win10上安装了anaconda3,当我使用conda安装opencv3时遇到了相同的错误: conda install -c menpo opencv3 我搜索了一会儿,看到了这个问题和另一个类似的问题在谷歌群组这里。不知何故,我成功地在python35虚拟环境中安装了opencv3,这也可能适用于Mac OS。
conda create --name python35 python=3.5
activate python35
conda install -c menpo opencv3

之后,重新启动Anaconda3导航器并选择python35环境。

在Spyder中进行测试:

import cv2
print(cv2.__version__)
3.1.0

2

更新:现在Conda有一个预构建的Python 3.6的OpenCV包!

直接的解决方案是在基本安装中执行以下操作:

conda install -c menpo opencv3

之前,这些包是基于Python 3.5构建的,所以我曾经使用@VivekPatani的替代方法来解决这个问题。

目前,conda menpo的存储库中有Python 3.6版本的预构建OpenCV版本。因此,不需要降级到3.5或从源代码构建OpenCV。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接