安装Python 3.3的opencv

OpenCV仍然不适用于Python 3.3,我真的必须降级到Python 2.7才能使用它吗? 我在互联网上没有发现太多内容,只有2012年的一些帖子说OpenCV还没有移植到Python 3.x中。 但现在是2014年,在尝试安装最新的OpenCV 2.4.x并将cv2.pyd文件复制到C: Program Files(x86) Python333 Lib site-packages之后,仍会在Python IDLE中产生错误:

>>> import cv2
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import cv2
ImportError: DLL load failed: %1 ist keine zulässige Win32-Anwendung.

注意:最初的问题是要求OpenCV + Python 3.3 + Windows。 此后,Python 3.5已经发布。 另外,我使用Ubuntu进行大多数开发,因此不幸的是,这个答案将关注于该设置

OpenCV 3.1.0 + Python 3.5.2 + Ubuntu 16.04是可能的! 就是这样。

这些步骤从以下内容复制(并稍加修改):

  • http://docs.opencv.org/3.1.0/d7/d9f/tutorial_linux_install.html
  • https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_fedora/py_setup_in_fedora.html#install-opencv-python-in-fedora
  • 先决条件

    安装所需的依赖关系,并可选择在系统上安装/更新一些库:

    # Required dependencies
    sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    # Dependencies for Python bindings
    # If you use a non-system copy of Python (eg. with pyenv or virtualenv), then you probably don't need to do this part
    sudo apt install python3.5-dev libpython3-dev python3-numpy
    # Optional, but installing these will ensure you have the latest versions compiled with OpenCV
    sudo apt install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
    

    构建OpenCV

    CMake标志

    有几个标志和选项可以调整你的OpenCV版本。 可能有关于它们的全面的文档,但是这里有一些可能有用的有趣的标志。 它们应该包含在cmake命令中:

    # Builds in TBB, a threading library
    -D WITH_TBB=ON
    # Builds in Eigen, a linear algebra library
    -D WITH_EIGEN=ON
    

    使用非系统级别的Python版本

    如果你有多个版本的Python(例如使用pyenv或virtualenv),那么你可能想要针对某个Python版本进行构建。 默认情况下,OpenCV将为系统的Python版本构建。 您可以通过将这些参数添加到稍后在脚本中看到的cmake命令来更改它。 实际值取决于您的设置。 我使用pyenv

    -D PYTHON_DEFAULT_EXECUTABLE=$HOME/.pyenv/versions/3.5.2/bin/python3.5
    -D PYTHON_INCLUDE_DIRS=$HOME/.pyenv/versions/3.5.2/include/python3.5m
    -D PYTHON_EXECUTABLE=$HOME/.pyenv/versions/3.5.2/bin/python3.5
    -D PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1
    

    CMake Python错误消息

    CMakeLists文件将尝试检测要为其构建的各种版本的Python。 如果你在这里有不同的版本,它可能会感到困惑。 上面的参数可能只能解决一个版本的Python的问题,而不能解决另一个版本的问题。 如果你只关心那个特定的版本,那么没有什么可担心的。

    对于我来说这种情况很不幸,我还没有研究如何解决其他Python版本的问题。

    安装脚本

    # Clone OpenCV somewhere
    # I'll put it into $HOME/code/opencv
    OPENCV_DIR="$HOME/code/opencv"
    OPENCV_VER="3.1.0"
    git clone https://github.com/opencv/opencv "$OPENCV_DIR"
    # This'll take a while...
    
    # Now lets checkout the specific version we want
    cd "$OPENCV_DIR"
    git checkout "$OPENCV_VER"
    
    # First OpenCV will generate the files needed to do the actual build.
    # We'll put them in an output directory, in this case "release"
    mkdir release
    cd release
    
    # Note: This is where you'd add build options, like TBB support or custom Python versions. See above sections.
    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local "$OPENCV_DIR"
    
    # At this point, take a look at the console output.
    # OpenCV will print a report of modules and features that it can and can't support based on your system and installed libraries.
    # The key here is to make sure it's not missing anything you'll need!
    # If something's missing, then you'll need to install those dependencies and rerun the cmake command.
    
    # OK, lets actually build this thing!
    # Note: You can use the "make -jN" command, which will run N parallel jobs to speed up your build. Set N to whatever your machine can handle (usually <= the number of concurrent threads your CPU can run).
    make
    # This will also take a while...
    
    # Now install the binaries!
    sudo make install
    

    默认情况下,即使您指定了要使用的自定义版本的Python, install脚本也会将Python绑定放入某个系统位置。 修复很简单:将一个符号链接放入本地site-packages的绑定:

    ln -s /usr/local/lib/python3.5/site-packages/cv2.cpython-35m-x86_64-linux-gnu.so $HOME/.pyenv/versions/3.5.2/lib/python3.5/site-packages/
    

    第一个路径将取决于您设置的Python版本。 第二个取决于你的定制版本的Python所在的位置。

    测试它!

    好吧,让我们试试看!

    ipython
    
    Python 3.5.2 (default, Sep 24 2016, 13:13:17) 
    Type "copyright", "credits" or "license" for more information.
    
    IPython 5.1.0 -- An enhanced Interactive Python.
    ?         -> Introduction and overview of IPython's features.
    %quickref -> Quick reference.
    help      -> Python's own help system.
    object?   -> Details about 'object', use 'object??' for extra details.
    
    In [1]: import cv2
    
    In [2]: img = cv2.imread('derp.png')
    i
    In [3]: img[0]
    Out[3]: 
    array([[26, 30, 31],
           [27, 31, 32],
           [27, 31, 32],
           ..., 
           [16, 19, 20],
           [16, 19, 20],
           [16, 19, 20]], dtype=uint8)
    

    是的,对于Python 3的支持,它在当前版本中仍然不可用,但它将从3.0版本开始提供(请参阅此故障单)。 如果你真的想让python 3尝试使用开发版本,你可以从GitHub下载它。

    编辑(2015年7月18日):3.0版现已发布,并且python 3支持现已正式推出


    这里有一个解决方案(我相信在下面的链接中'cp34'所见)Python 3.4。

    转到http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv。

    下载适当的.whl。

    转到保存.whl的目录。

    使用pip来安装.whl。 例如pip install opencv_python-3.0.0-cp34-none-win_amd64.whl

    然后只需使用import cv2

    链接地址: http://www.djcxy.com/p/72005.html

    上一篇: Install opencv for Python 3.3

    下一篇: Python3 Import Error with pycurl Mac OS X