安装Python 3.3的opencv

OpenCV仍然不适用于Python 3.3,我真的必须降级到Python 2.7才能使用它吗? 我在网上没有find太多关于它的文章,只是从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是可能的! 就是这样。

这些步骤被复制(并稍作修改):

先决条件

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

 # 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 

build设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版本进行构build。 默认情况下,OpenCV将为系统的Python版本构build。 您可以通过将这些参数添加到稍后在脚本中看到的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文件将尝试检测要构build的各种版本的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/ 

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

testing一下!

好吧,让我们试试吧!

 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支持现在正式提供

这里的一个解决scheme(我相信如下面的链接中的“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

由于缺乏声誉,我不能评论米奥帕的优秀答案 。

在Mac上,我使用以下命令(最终)成功地从源代码安装了opencv:

 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 

我添加了一个PYTHONPATH环境variables到我的~/.bash_profile文件,以便Python可以findcv2.so

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

[对于那些使用PyCharm,我必须去首选项>项目结构>添加内容根,并将path添加到cv2.so的父目录: /usr/local/lib/python3.4/site-packages ]

这个命令让我知道了错误,例如:

通过显式声明python库pathCould NOT find PythonLibs

 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

在terminal,检查它的工作:

 $python3 >>> import cv2 

如果你没有得到ImportError: No module named 'cv2'

这工作在Macbook Pro Retina 15“2013,Mavericks 10.9.4,Python 3.4.1(以前从官方下载安装),opencv3从源码。希望这可以帮助别人。

我知道这是一个古老的线程,但为了防止有人在寻找,下面是我如何在El Capitan工作:

brew install opencv3 --with-python3

等一下完成。

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

brew unlink opencv

然后执行以下步骤作为最后一步:

brew ln opencv3 --force

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

使用点应用程序。 在Windows上,您可以在Python3/Scripts/pip.exefind它,而在Ubuntu上,您可以使用apt-get install python3-pip 。 所以,使用命令行:

pip3 install --upgrade pip

pip3 install opencv-python

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

我在使用python3绑定和虚拟环境的OSX上运行opencv 3.0遇到了很多麻烦。 其他的答案帮了很多忙,但是还是花了点功夫。 希望这会帮助下一个人。 保存到build_opencv.sh 。 然后下载opencv ,修改下面的shell脚本中的variables,交叉手指并运行它( . ./build_opencv.sh )。 对于debugging,使用其他职位,特别是詹姆斯弗莱彻 。

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

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

 #!/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. 

有关詹姆斯·弗莱彻的答案的完整说明可以在这里find

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

  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 .. 

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

花了3小时尝试在这里提到的Ubuntu 14.04LTS上的各种选项,并在另一个参考教程无济于事。 有一段时间尝试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包括添加以下问题删除video支持:

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

也要注意cmake关于使用make clean的警告。 如果你运行make clean,你可能不得不重新压缩原来的包。 Cmake死了,Cmake万岁

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

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

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

您可以直接从Docker集线器拖出图像,或按照Dockerfile中的说明进行安装。

无论您是手动安装opencv3还是从Gohlke的whl软件包安装opencv3,我都需要按照以下步骤创build/编辑site_packages中的文件cv.py,以便与旧代码兼容:

 import cv2 as cv 

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

 conda install -c menpo opencv3 

从Scivision教程的第1步。 如果这不起作用,那么继续步骤2:

(仅限Windows)OpenCV 3.2 pip安装

在这里下载OpenCV .whl文件 。 提及contrib的软件包包括OpenCV-extra软件包。 例如,假设你有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 wheels包是用于AMD芯片的。