为 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 或更高版本
sh 启用deadsnakes PPA,安装Python 2.6,2.7,3.2和3.3,安装easy_install并进入这些版本