为 Python 3.3 安装 opencv
- 2025-03-20 08:47:00
- admin 原创
- 46
问题描述:
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.
解决方案 1:
编辑:首先尝试新的 pip 方法:
视窗:pip3 install opencv-python opencv-contrib-python
乌本图: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 的问题。如果您只关心该特定版本,那么就没有什么可担心的了。
我就是这种情况,所以不幸的是,我还没有研究如何解决其他 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)
解决方案 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
。
解决方案 3:
是的,当前版本仍不支持 Python 3,但从3.0 版开始将提供该功能(请参阅此票)。如果您确实想要尝试使用开发版本,则可以从 GitHub下载它。
编辑(2015 年 7 月 18 日):版本 3.0 现已发布,python 3 支持现已正式可用
解决方案 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 的优秀答案。
在 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
环境变量,~/.bash_profile
以便 Python 可以找到cv2.so
:
PYTHONPATH="${PYTHONPATH}:/usr/local/lib/python3.4/site-packages”
export PYTHONPATH
[对于使用 PyCharm 的用户,我必须转到“首选项”>“项目结构”>“添加内容根”,然后将路径添加到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(之前从官方下载安装)、opencv3(来自源代码)。希望这对某些人有帮助。
解决方案 6:
我知道这是一个老话题,但万一有人看到,下面是我在 El Capitan 上让它运行的方法:
brew install opencv3 --with-python3
并等待一会儿直至完成。
然后根据需要运行以下命令:
brew unlink opencv
然后运行以下命令作为最后一步:
brew ln opencv3 --force
现在您应该能够import cv2
在 python 3.x 脚本中无问题地运行。
解决方案 7:
我在使用 python3 绑定和虚拟环境让 opencv 3.0 在 OSX 上运行时遇到了很多麻烦。其他答案很有帮助,但仍然需要一点时间。希望这能帮助下一个人。将其保存到build_opencv.sh
。然后下载 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 \n -D CMAKE_INSTALL_PREFIX=/usr/local \n -D PYTHON_EXECUTABLE=${PYTHON_DIR}/bin/python3 \n -D PYTHON_LIBRARY=${PYTHON_DIR}/lib/libpython3.4m.dylib \n -D PYTHON_INCLUDE_DIR=${PYTHON_DIR}/include/python3.4m \n -D PYTHON_NUMPY_INCLUDE_DIRS=${PYTHON_DIR}/lib/python3.4/site-packages/numpy/core/include/numpy \n -D PYTHON_PACKAGES_PATH=${PYTHON_DIR}lib/python3.4/site-packages \n -D OPENCV_EXTRA_MODULES_PATH=opencv_contrib/modules \n -D BUILD_opencv_legacy=OFF \n ${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 上的各种选项以及另一个参考教程,但无济于事。一段时间尝试使用 OpenCV3.0.0,但最终切换到 3.1.0。以下方法有效:
cmake -D CMAKE_BUILD_TYPE=RELEASE \n-D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.4m.so \n-D PYTHON3_EXECUTABLE=/usr/bin/python3.4m \n-D PYTHON3_INCLUDE_DIR=/usr/include/python3.4m/ \n-D PYTHON_INCLUDE_DIR=/usr/include/python3.4m/ \n-D PYTHON3_INCLUDE_DIRS=/usr/include/python3.4m/ \n-D PYTHON_INCLUDE_DIRS=/usr/include/python3.4m/ \n-D BUILD_opencv_python3=ON \n.
输出:
-- 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 \n-D CMAKE_INSTALL_PREFIX=$VIRTUAL_ENV \n-D PYTHON3_EXECUTABLE=$VIRTUAL_ENV/bin/python3 \n-D PYTHON3_PACKAGES_PATH=$VIRTUAL_ENV/lib/python3.4/site-packages \n-D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.4m.so \n-D PYTHON3_INCLUDE_DIR=$VIRTUAL_ENV/include/python3.4m \n-D PYTHON_INCLUDE_DIR=$VIRTUAL_ENV/include/python3.4m \n-D PYTHON3_INCLUDE_DIRS=$VIRTUAL_ENV/include/python3.4m \n-D PYTHON_INCLUDE_DIRS=$VIRTUAL_ENV/include/python3.4m \n-D BUILD_opencv_python3=ON \n.
如果您对 ffmpeg 有疑问,请添加以下内容以删除视频支持:
-D WITH_FFMPEG=OFF \n-D WITH_GSTREAMER=OFF \n-D WITH_V4L=OFF \n-D WITH_1394=OFF \n
还要注意 cmake 关于使用 的警告make clean
。如果你运行了 make clean,你可能必须重新解压原始包。Cmake 已死,Cmake 万岁
解决方案 9:
有关 James Fletcher 答案的完整说明可在此处找到
特别是对于 Anaconda 发行版,我必须按如下方式修改它:
cmake -D CMAKE_BUILD_TYPE=RELEASE \n -D CMAKE_INSTALL_PREFIX=/usr/local \n -D PYTHON3_PACKAGES_PATH=/anaconda/lib/python3.4/site-packages/ \n -D PYTHON3_LIBRARY=/anaconda/lib/libpython3.4m.dylib \n -D PYTHON3_INCLUDE_DIR=/anaconda/include/python3.4m \n -D INSTALL_C_EXAMPLES=ON \n -D INSTALL_PYTHON_EXAMPLES=ON \n -D BUILD_EXAMPLES=ON \n -D BUILD_opencv_python3=ON \n -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..
最后一行可以省略(见上面的链接)
解决方案 10:
如果你在这里……很抱歉其他选择不起作用。试试这个:
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
请注意,...win_amd64.whl
该教程第 2 步中的轮子包适用于 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:
无论您是否手动安装 opencv3 或从 Gohlke 的 whl 包安装,我发现需要在 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
扫码咨询,免费领取项目管理大礼包!