为 Python 3.3 安装 opencv

Posted

技术标签:

【中文标题】为 Python 3.3 安装 opencv【英文标题】:Install opencv for Python 3.3 【发布时间】: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.

【问题讨论】:

这是***.com/questions/26489867/… 的复制品,确实是后来发布的。 并重新链接到这个:D 这个解决方案***.com/questions/36201282/install-opencv-for-python3 终于为我工作了。 首先尝试一下! 如果运行 Anaconda:conda install -c menpo opencv3 从Scivision's Tutorial 的第一步开始。如果这不起作用,请尝试第 2 步。请注意,第 2 步中的 ...win_amd64.whl ***包适用于 AMD 芯片。 在此处从源代码检查 python3.6 的构建:***.com/a/58915533/4137497 【参考方案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 是可能的!方法如下。

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

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

默认情况下,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://***.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_DIRlib/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

【讨论】:

以上是关于为 Python 3.3 安装 opencv的主要内容,如果未能解决你的问题,请参考以下文章

Install OpenCV-Python in Ubuntu

通过 pip 为 python 2.7 安装 py2exe:此包需要 Python 3.3 或更高版本

在Ubuntu上安装Python 3.3

sh 启用deadsnakes PPA,安装Python 2.6,2.7,3.2和3.3,安装easy_install并进入这些版本

在pip上为python 2.7安装py2exe:这个包需要Python 3.3或更高版本

在 Anaconda 中创建 python 3.3 环境