安装适用于Python 3.3的opencv
OpenCV还不能用于Python 3.3吗?我真的必须降级到Python 2.7才能使用它吗?我在互联网上没有找到太多关于它的信息,只有2012年的一些帖子说OpenCV还没有移植到Python3.x中使用。但现在是2014年,在尝试安装最新的OpenCV 2.4.x并将安装适用于Python 3.3的opencv,python,opencv,python-3.x,Python,Opencv,Python 3.x,OpenCV还不能用于Python 3.3吗?我真的必须降级到Python 2.7才能使用它吗?我在互联网上没有找到太多关于它的信息,只有2012年的一些帖子说OpenCV还没有移植到Python3.x中使用。但现在是2014年,在尝试安装最新的OpenCV 2.4.x并将cv2.pyd文件复制到C:\Program Files(x86)\Python333\Lib\site软件包后,仍然会在Python IDLE中产生错误: >>> import cv2 Traceback
cv2.pyd
文件复制到C:\Program Files(x86)\Python333\Lib\site软件包后,仍然会在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.
导入cv2
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
进口cv2
导入错误:DLL加载失败:%1是keine zulässige Win32 Anwendung。
是的,对Python 3的支持在当前版本中仍然不可用,但将从版本中提供。如果您真的想让Python3使用开发版本,您可以下载它 编辑(18/07/2015):
3.0版现已发布,编辑:首先尝试新的pip方法: Windows:
pip3安装opencv python opencv contrib python
Ubuntu:sudoapt安装python3opencv
或者继续下面的构建说明
注意:最初的问题是询问OpenCV+Python3.3+Windows。从那时起,Python3.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
克马克旗
有几个标志和选项可以调整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版本。第二个问题取决于自定义版本的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)
由于缺乏声誉,我不能评论米多帕的出色表现 在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/
那么
将机器可以处理的线程数更改为8,以加快速度
sudo make install
我在我的~/.bash_profile
文件中添加了一个PYTHONPATH
环境变量,以便Python可以找到cv2.so
:
PYTHONPATH="${PYTHONPATH}:/usr/local/lib/python3.4/site-packages”
export PYTHONPATH
[对于那些使用PyCharm的人,我必须进入“首选项”>“项目结构”>“添加内容根目录”,并将路径添加到cv2.so
的父目录:/usr/local/lib/python3.4/site packages
]
此命令使我克服了以下错误:
无法通过显式声明python库路径找到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
在终端中,检查它是否与以下设备一起工作:
$python3
>>> import cv2
如果您没有得到importorror:没有名为“cv2”的模块,那就太好了。
这在Macbook Pro Retina 15“2013、Mavericks 10.9.4、Python 3.4.1(以前从安装)上运行,来自源代码的opencv3。希望这对其他人有所帮助。我在让opencv 3.0在OSX上使用python3绑定和虚拟环境时遇到了很多麻烦。其他答案帮助很大,但仍然需要一点。希望这将帮助下一个人。将此保存到
build_opencv.sh
。然后,修改下面s中的变量hell脚本,交叉手指,运行它(。/build\u opencv.sh
)。要调试,请使用其他帖子,尤其是
别忘了将opencv lib dir添加到PYTHONPATH中
注意-这也下载了opencv contrib,其中许多函数都已被移动。它们现在也被不同于文档的名称空间引用-例如,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.
这里是Python3.4的解决方案(我相信下面链接中的“cp34”可以看到)
去
下载相应的.whl
转到保存.whl的目录
使用pip安装.whl。例如,pip安装opencv_python-3.0.0-cp34-none-win_amd64.whl
然后只需使用导入cv2即可找到与James Fletcher答案相关的完整说明 特别是对于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 ..
最后一行可以修改(请参见上面的链接)我知道这是一个旧线程,但为了防止有人看到,下面是我如何在El Capitan上使用它的:
brew安装opencv3--with-python3
然后等一会儿,等它结束
然后根据需要运行以下操作:
brew取消opencv链接
然后运行以下操作作为最后一步:
brew ln opencv3--force
现在,您应该可以在python 3.x脚本中运行导入cv2了。花了3个小时在Ubuntu 14.04LTS上尝试这里提到的各种选项
$python3
>>> import cv2
#!/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.
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 ..
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):
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 \
.
-D WITH_FFMPEG=OFF \
-D WITH_GSTREAMER=OFF \
-D WITH_V4L=OFF \
-D WITH_1394=OFF \
import cv2 as cv
conda install -c menpo opencv3
pip install opencv_python-3...yourVersion...win_amd64.whl
py -3.3 -m pip install opencv-python
export MAKEFLAGS="-j8"
pip3 install opencv-python --no-cache-dir