【问题标题】:Install opencv for Python 3.3为 Python 3.3 安装 opencv
【发布时间】:2014-01-24 01:15:00
【问题描述】:

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.

【问题讨论】:

标签: python opencv python-3.x


【解决方案1】:

编辑:首先尝试新的 pip 方法:

Windows:pip3 install opencv-python opencv-contrib-python

Ubuntu:sudo apt install python3-opencv

或继续下面的构建说明

注意:最初的问题是要求 OpenCV + Python 3.3 + Windows。从那时起,Python 3.5 已经发布。此外,我使用 Ubuntu 进行大多数开发,所以这个答案将集中在那个设置上,不幸的是

OpenCV 3.1.0 + Python 3.5.2 + Ubuntu 16.04 是可能的!方法如下。

这些步骤是从以下位置复制(并稍作修改)的:

先决条件

在您的系统上安装所需的依赖项并选择性地安装/更新一些库:

# 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

默认情况下,install 脚本会将 Python 绑定放在某个系统位置,即使您已指定要使用的自定义 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)

【讨论】:

  • 很高兴看到您成功让 OpenCV 与 Python3 一起工作。我一直在努力在 CentOS 6.5 上用 Python3.4 编译 OpenCV ......我达到了 86% 错误开始出现的地方:在 /usr/local/lib/python3.4/site-packages/numpy/core 包含的文件中/include/numpy/ndarraytypes.h:4,来自 /usr/local/lib/python3.4/site-packages/numpy/core/include/numpy/ndarrayobject.h:17,来自 /tmp/opencv/modules/python /src2/cv2.cpp:10: /usr/local/lib/python3.4/site-packages/numpy/core/include/numpy/npy_common.h:268:2: 错误:#error 必须使用带有 unicode 的 Python
  • 我被 cmake 卡住了,找不到 Python3“库:否”。这是在 Ubuntu 14.04lts 上。尝试“-D PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.4m.so”失败。 Cmake 令人不安
  • 第 3 步中的链接已损坏。这就是为什么您在答案中包含关键信息,而不是链接到它。
  • @midopa 你能看看这里吗github.com/opencv/opencv/issues/7045
  • 有一个更简单的方法。 pip3 install opencv-python opencv-contrib-python.
【解决方案2】:

这里是 Python 3.4 的解决方案(我相信如下链接中的“cp34”所示)。

转到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吧。

【讨论】:

  • 您能否提供 Python3.5.2 的轮子文件的链接,OSX El Capitan 64 位的 opencv3 文件的链接?我在那个页面上找不到它!
  • @MonaJalal 抱歉,我不知道在哪里可以找到这些。我发布的链接是“为 Python 编程语言的官方 CPython 发行版提供许多科学开源扩展包的 32 位和 64 位 Windows 二进制文件”。如果您找到适用于 OSX 的 oppencv 的链接(或其他答案),请分享。
  • 没有找到!带有 Python3.5.2 的 OSX El Capitan 让我失望了!现在求助于 Ubuntu 16.04 和 Python3.5.2。
  • @user3731622 如您所说,我能够使用 .whl 文件成功下载并安装 opencv。但是当我尝试做import cv2 时,我收到以下错误ImportError: bumpy.core.multiarray failed to import。你我怎么能解决这个问题?我在 Windows 64 位,我使用 Python 3.5.1 32 位。谢谢
  • @user3731622 你说得对,我还没有安装 numpy。
【解决方案3】:

是对 Python 3 的支持,它在当前版本中仍然不可用,但将从版本 3.0, (see this ticket) 开始提供。如果你真的想用python 3试试开发版,可以下载from GitHub。

编辑(2015 年 7 月 18 日): 3.0 版现已发布,python 3 support is now officially available

【讨论】:

  • 现在正在尝试从这里sourceforge.net/projects/opencvlibrary/files/opencv-win/… 下载 Windows 的二进制文件......我告诉你我是否可以让它与 Python 3.3.3 一起工作 编辑:该死的当前技术预览仍然仅附带 python27 二进制文件 :(
  • (几个月后)github 上的当前 master 似乎是 3.0.0 -dev 版本(这就是“opencv / modules / core / include / opencv2 / core / version.hpp”所说的)。目前还不清楚如何构建/安装它(在我的情况下是在 OS X 上;Python 3.4)。从code.opencv.org/projects/opencv/issues?query_id=2来看,似乎有OpenCV 2.4.10这样的东西。我假设这是版本 2 分支中的下一个版本。我不知道这是否与 Py3 兼容。任何人都可以对此有所了解吗?
  • 对此有何消息?我需要 OpenCV 在 windows 上运行 python 3.3。谢谢
  • @Yosh 感谢您注意到这一点,我用您提供的链接更新了答案
  • cv2.cv 在 3.0 中不再可用?
【解决方案4】:

使用 pip 应用程序。在 Windows 上,您可以在 Python3/Scripts/pip.exe 中找到它,而在 Ubuntu 上,您可以使用 apt-get install python3-pip 进行安装。 所以,使用命令行:

pip3 install --upgrade pip

pip3 install opencv-python

在 Windows 上仅使用 pip.exe 而不是 pip3

【讨论】:

    【解决方案5】:

    由于缺乏声誉,我无法评论 midopa 的优秀answer。

    在 Mac 上,我(最终)使用以下命令成功安装了 opencv from source:

    cmake -D CMAKE_BUILD_TYPE=RELEASE 
    -D CMAKE_INSTALL_PREFIX=/usr/local 
    -D PYTHON_EXECUTABLE=/Library/Frameworks/Python.framework/Versions/3.4/bin/python3 
    -D PYTHON_LIBRARY=/Library/Frameworks/Python.framework//Versions/3.4/lib/libpython3.4m.dylib 
    -D PYTHON_INCLUDE_DIR=/Library/Frameworks/Python.framework/Versions/3.4/include/python3.4m 
    -D PYTHON_NUMPY_INCLUDE_DIRS=/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/numpy/core/include/numpy 
    -D PYTHON_PACKAGES_PATH=/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages 
    /relative/path/to/source/directory/
    

    那么,

    make -j8
    

    将机器可以处理的线程数更改为 8,以加快处理速度

    sudo make install
    

    我在~/.bash_profile 文件中添加了一个PYTHONPATH 环境变量,以便Python 可以找到cv2.so:

    PYTHONPATH="${PYTHONPATH}:/usr/local/lib/python3.4/site-packages”
    export PYTHONPATH
    

    [对于那些使用 PyCharm 的人,我必须去 Preferences > Project Structure > Add Content Root,并添加cv2.so的父目录的路径:/usr/local/lib/python3.4/site-packages]

    这个命令让我过去了错误,例如:

    Could NOT find PythonLibs,通过显式声明python库路径

    ld: can't link with a main executable for architecture x86_64
    collect2: error: ld returned 1 exit status
    make[2]: *** [lib/cv2.so] Error 1
    make[1]: *** [modules/python2/CMakeFiles/opencv_python2.dir/all] Error 2
    make: *** [all] Error 2
    

    通过显式指向 libpython3.4m.dylib

    在终端中,检查它是否可以使用:

    $python3
    >>> import cv2
    

    没有ImportError: No module named 'cv2'也好

    这适用于 Macbook Pro Retina 15" 2013、Mavericks 10.9.4、Python 3.4.1(以前从 official download 安装)、源代码 opencv3。希望这对某人有所帮助。

    【讨论】:

    • 我最终在命令行中很好地导入了 cv2,但在 PyCharm IDE 中却没有。 PyCharm 抱怨无法找到 .dylib 文件。为了解决这个问题,我将 DYLD_LIBRARY_PATH 变量添加到 PyCharm 中启动模块的配置中。 DYLD_LIBRARY_PATH 指向包含 cv2.so 中引用的 .dylib 文件的文件夹
    • 这很好,但您也可以只使用自制软件:brew install opencv3 --with-python3,然后是 brew ln opencv3 --force,您应该是 GTG 才能在 python 3.x 脚本中运行 import cv2。
    【解决方案6】:

    我知道这是一个旧线程,但以防万一有人在看,这是我在 El Capitan 上工作的方法:

    brew install opencv3 --with-python3

    并等待它完成。

    然后根据需要运行以下命令:

    brew unlink opencv

    然后运行以下作为最后一步:

    brew ln opencv3 --force

    现在您应该可以在 python 3.x 脚本中运行 import cv2 了。

    【讨论】:

    • python3.5.2 对我不起作用 你的 python 版本是什么?
    • @MonaJalal 3.5.2。你在 OSX 上运行自制软件?
    【解决方案7】:

    让 opencv 3.0 在带有 python3 绑定和虚拟环境的 OSX 上工作时遇到了很多麻烦。其他答案有很大帮助,但仍然需要一点时间。希望这将有助于下一个人。将此保存到build_opencv.sh。然后download opencv,修改下面的shell脚本中的变量,交叉手指,运行它(. ./build_opencv.sh)。对于调试,请使用其他帖子,尤其是James Fletchers。

    不要忘记将 opencv lib 目录添加到您的 PYTHONPATH。

    注意 - 这也下载了 opencv-contrib,其中许多功能已被移动。而且它们现在也被与文档不同的命名空间引用 - 例如,SIFT 现在位于 cv2.xfeatures2d.SIFT_create 下。唉。

    #!/bin/bash
    # Install opencv with python3 bindings: https://stackoverflow.com/questions/20953273/install-opencv-for-python-3-3/21212023#21212023
    
    # First download opencv and put in OPENCV_DIR
    
    #
    # Edit this section
    #
    PYTHON_DIR=/Library/Frameworks/Python.framework/Versions/3.4
    OPENCV_DIR=/usr/local/Cellar/opencv/3.0.0
    NUM_THREADS=8
    CONTRIB_TAG="3.0.0"  # This will also download opencv_contrib and checkout the appropriate tag https://github.com/Itseez/opencv_contrib
    
    
    #
    # Run it
    #
    
    set -e  # Exit if error
    
    cd ${OPENCV_DIR}
    
    if  [[ ! -d opencv_contrib ]]
    then
        echo '**Get contrib modules'
        [[ -d opencv_contrib ]] || mkdir opencv_contrib
        git clone git@github.com:Itseez/opencv_contrib.git .
        git checkout ${CONTRIB_TAG}
    else
        echo '**Contrib directory already exists. Not fetching.'
    fi
    
    cd ${OPENCV_DIR}
    
    echo '**Going to do: cmake'
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
        -D CMAKE_INSTALL_PREFIX=/usr/local \
        -D PYTHON_EXECUTABLE=${PYTHON_DIR}/bin/python3 \
        -D PYTHON_LIBRARY=${PYTHON_DIR}/lib/libpython3.4m.dylib \
        -D PYTHON_INCLUDE_DIR=${PYTHON_DIR}/include/python3.4m \
        -D PYTHON_NUMPY_INCLUDE_DIRS=${PYTHON_DIR}/lib/python3.4/site-packages/numpy/core/include/numpy \
        -D PYTHON_PACKAGES_PATH=${PYTHON_DIR}lib/python3.4/site-packages \
        -D OPENCV_EXTRA_MODULES_PATH=opencv_contrib/modules \
        -D BUILD_opencv_legacy=OFF  \
        ${OPENCV_DIR}
    
    
    echo '**Going to do: make'
    make -j${NUM_THREADS}
    
    echo '**Going to do: make install'
    sudo make  install
    
    echo '**Add the following to your .bashrc: export PYTHONPATH=${PYTHONPATH}:${OPENCV_DIR}/lib'
    export PYTHONPATH=${PYTHONPATH}:${OPENCV_DIR}/lib
    
    echo '**Testing if it worked'
    python3 -c 'import cv2'
    echo 'opencv properly installed with python3 bindings!'  # The script will exit if the above failed.
    

    【讨论】:

      【解决方案8】:

      花了 3 个小时尝试此处提到的 Ubuntu 14.04LTS 和另一个引用的 tutorial 上的各种选项,但无济于事。有一段时间尝试使用 OpenCV3.0.0,但最终切换到 3.1.0。以下工作:

      cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.4m.so \
      -D PYTHON3_EXECUTABLE=/usr/bin/python3.4m \
      -D PYTHON3_INCLUDE_DIR=/usr/include/python3.4m/ \
      -D PYTHON_INCLUDE_DIR=/usr/include/python3.4m/ \
      -D PYTHON3_INCLUDE_DIRS=/usr/include/python3.4m/ \
      -D PYTHON_INCLUDE_DIRS=/usr/include/python3.4m/ \
      -D BUILD_opencv_python3=ON \
      .
      

      输出:

      --   OpenCV modules:
      --     To be built:                 core flann imgproc ml photo video imgcodecs shape videoio highgui objdetect superres ts features2d calib3d stitching videostab python3
      --     Disabled:                    java world
      --     Disabled by dependency:      -
      --     Unavailable:                 cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev python2 viz
      
      --   Python 3:
      --     Interpreter:                 /usr/bin/python3.4m (ver 3.4.3)
      --     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.4m.so (ver 3.4.3)
      --     numpy:                       /usr/lib/python3/dist-packages/numpy/core/include (ver 1.8.2)
      --     packages path:               /usr/lib/python3/dist-packages
      -- 
      --   Python (for build):      
      

      并且使用 virtualenv 使用以下 cmake 选项:

      cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=$VIRTUAL_ENV \
      -D PYTHON3_EXECUTABLE=$VIRTUAL_ENV/bin/python3 \
      -D PYTHON3_PACKAGES_PATH=$VIRTUAL_ENV/lib/python3.4/site-packages \
      -D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.4m.so \
      -D PYTHON3_INCLUDE_DIR=$VIRTUAL_ENV/include/python3.4m \
      -D PYTHON_INCLUDE_DIR=$VIRTUAL_ENV/include/python3.4m \
      -D PYTHON3_INCLUDE_DIRS=$VIRTUAL_ENV/include/python3.4m \
      -D PYTHON_INCLUDE_DIRS=$VIRTUAL_ENV/include/python3.4m \
      -D BUILD_opencv_python3=ON \
      .
      

      如果您对 ffmpeg 有疑问,请添加以下内容以删除视频支持:

      -D WITH_FFMPEG=OFF \
      -D WITH_GSTREAMER=OFF \
      -D WITH_V4L=OFF \
      -D WITH_1394=OFF \
      

      还要注意 cmake 关于使用 make clean 的警告。如果您运行 make clean,您可能必须重新解压缩原始包。 Cmake 已死,Cmake 万岁

      【讨论】:

        【解决方案9】:

        有关 James Fletcher 答案的完整说明,请参见 here

        特别是对于 Anaconda 发行版,我不得不这样修改它:

         cmake -D CMAKE_BUILD_TYPE=RELEASE \
            -D CMAKE_INSTALL_PREFIX=/usr/local \
            -D PYTHON3_PACKAGES_PATH=/anaconda/lib/python3.4/site-packages/ \
            -D PYTHON3_LIBRARY=/anaconda/lib/libpython3.4m.dylib \
            -D PYTHON3_INCLUDE_DIR=/anaconda/include/python3.4m \
            -D INSTALL_C_EXAMPLES=ON \
            -D INSTALL_PYTHON_EXAMPLES=ON \
            -D BUILD_EXAMPLES=ON \
            -D BUILD_opencv_python3=ON \
            -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..
        

        最后一行可以省略(见上面的链接)

        【讨论】:

          【解决方案10】:

          如果你在这里...我很抱歉其他选项没有锻炼。试试这个:

          conda install -c menpo opencv3
          

          来自Scivision's Tutorial 的第 1 步。如果这不起作用,请继续第 2 步:

          (仅限 Windows)OpenCV 3.2 pip 安装

          Download OpenCV .whl file here。名称中提及contrib 的软件包包括 OpenCV-额外的包。例如,假设你有 Python 3.6,你 可能会下载 opencv_python-3.2.0+contrib-cp36-none-win_amd64.whl 以获取 OpenCV-extra 包。

          然后,从命令提示符:

          pip install opencv_python-3...yourVersion...win_amd64.whl
          

          请注意,该教程第 2 步中的 ...win_amd64.whl 轮子包适用于 AMD 芯片。

          【讨论】:

            【解决方案11】:

            有人为此发布了一个 docker 容器/文件:

            https://github.com/vipul-sharma20/docker-opencv3-python3

            https://hub.docker.com/r/vipul20/docker-opencv3-python3/~/dockerfile/

            您可以直接从 docker hub 拉取镜像或按照 Dockerfile 中的说明进行安装。

            【讨论】:

              【解决方案12】:

              如果您发现 pip3 install opencv-python 耗时太长,您可以设置构建线程数:

              export MAKEFLAGS="-j8"
              pip3 install opencv-python --no-cache-dir
              

              (--no-cache-dir 将忽略以前的构建)

              【讨论】:

                【解决方案13】:

                无论你是手动安装还是从 Gohlke 的 whl 包安装 opencv3,我发现需要在 site_packages 中创建/编辑文件 cv.py 如下以兼容旧代码:

                import cv2 as cv
                

                【讨论】:

                • 你能解释一下你为什么以及如何得出这个结论吗?
                • 抱歉,这只提供了有限的功能。摆脱了一些错误而不是要走的路。
                【解决方案14】:

                您可以在 Windows 上的命令提示符 (cmd) 上使用以下命令:

                py -3.3 -m pip install opencv-python
                

                我在这里制作了一个视频,介绍如何在 1 分钟内在 Windows 上安装 OpenCV Python:

                https://www.youtube.com/watch?v=m2-8SHk-1SM

                希望对你有帮助!

                【讨论】:

                  【解决方案15】:

                  对于 Ubuntu - pip3 install opencv-python sudo apt-get install python3-opencv

                  【讨论】:

                    猜你喜欢
                    • 2013-05-31
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-12-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-08-24
                    相关资源
                    最近更新 更多