为 Python 3.3 安装 opencv

2025-03-20 08:47:00
admin
原创
45
摘要:问题描述:OpenCV 是否仍然不适用于 Python 3.3?我真的必须降级到 Python 2.7 才能使用它吗?我在互联网上没有找到太多相关信息,只有 2012 年的一些帖子说 OpenCV 尚未移植到 Python 3.x 中使用。但现在是 2014 年,在尝试安装最新的 OpenCV 2.4.x 并...

问题描述:

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

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用