在Python虚拟环境中运行OpenCV

14
我正在尝试在Ubuntu Server 12.04的虚拟环境中安装OpenCV。我找到了一个讨论此问题的线程,但没有从中提取到任何信息。
我尝试使用pip install pyopencv,但失败了。
...
package/extras/core/ndarray.cpp:598:1:   instantiated from here

package/extras/core/ndarray.cpp:546:9: warning: format ‘%d’ expects argument of typeint’, but argument 4 has type ‘Py_intptr_t {aka long int}’ [-Wformat]

package/extras/core/ndarray.cpp: In function ‘boost::python::api::object sdcpp::from_ndarray_impl(const sdcpp::ndarray&) [with T = cv::Scalar_<double>]’:

package/extras/core/ndarray.cpp:601:1:   instantiated from here

package/extras/core/ndarray.cpp:546:9: warning: format ‘%d’ expects argument of typeint’, but argument 4 has type ‘Py_intptr_t {aka long int}’ [-Wformat]

package/extras/core/ndarray.cpp: In function ‘boost::python::api::object sdcpp::from_ndarray_impl(const sdcpp::ndarray&) [with T = cv::Range]’:

package/extras/core/ndarray.cpp:604:1:   instantiated from here

package/extras/core/ndarray.cpp:546:9: warning: format ‘%d’ expects argument of typeint’, but argument 4 has type ‘Py_intptr_t {aka long int}’ [-Wformat]

error: command 'gcc' failed with exit status 1

这个错误只会在第二次运行pip install时出现。如果我删除剩余的build/文件夹,就会出现这个错误。
-- Configuring incomplete, errors occurred!

Configuring PyOpenCV via CMake...

Error: error occurred while running CMake to configure PyOpenCV.

You may want to manually configure PyOpenCV by running cmake's tools:

    mkdir build

    cd build

    cmake-gui ..    OR    cmake ..

    cd ..

----------------------------------------
Command python setup.py egg_info failed with error code 255

我至少安装了以下apt包。
build-essential
uuid-dev
python-dev
python-pip
libpq-dev
cmake
libboost-dev
libcv-dev
libcvaux-dev
libboost-python-dev
libboost1.48-dev

我该如何在虚拟环境中安装OpenCV?


我也遇到了同样的问题。不过我注意到,'pyopencv' 对应于这个项目 http://code.google.com/p/pyopencv/,而不是随 opencv 2.X 一起提供的 python 绑定。 - Nate Parsons
3个回答

13

创建了一个虚拟环境,然后按照这篇指南操作:http://www.samontab.com/web/2011/06/installing-opencv-2-2-in-ubuntu-11-04/ 直到操作和复制cv共享对象部分。相反地,我将cv.so(从我的OpenCV-2.2.0 / lib目录)复制到了虚拟环境的site-packages中(例如:env/lib/python2.7/site-packages/)。一旦在环境中有了cv.so,就可以在python中导入cv。


1
谢谢,复制共享对象是我遗漏的!唯一的区别是我从 /usr/lib/pymodules 复制了 cv.py[c] 和 cv2.so,类似于 https://github.com/ingenuitas/SimpleCV#installation。 - Nate Parsons

9

以下是最干净的方法,使用pyenv和virtualenv插件。

安装支持共享库的Python(这样我们就可以在Mac OS X上获得libpython2.7.dylib或在Linux上获得libpython2.7.so)。

env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install -v 2.7.6

根据刚刚安装的Python版本创建虚拟环境。

pyenv virtualenv 2.7.6 myvirtualenv

激活虚拟环境。

pyenv shell myvirtualenv
pyenv rehash

安装numpy。否则,opencv将无法正确连接到Python。
pip install numpy

设置Python安装的前缀。

PREFIX_MAIN=`pyenv virtualenv-prefix`

设置环境的前缀。(注意!这些pyenv命令的名称有点误导!)

PREFIX=`pyenv prefix`

现在配置并安装OpenCV。请注意,OpenCV的二进制文件和软件包将安装在我们的虚拟环境中,而Python安装的动态库和包含文件将被使用。
cd openCV2.4
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX="$PREFIX" -DPYTHON_EXECUTABLE="$PREFIX"/bin/python2.7 -DPYTHON_LIBRARY="$PREFIX_MAIN"/lib/libpython2.7.so -DPYTHON_INCLUDE_DIR="$PREFIX_MAIN"/include/python2.7 -DPYTHON_PACKAGES_PATH="$PREFIX"/lib/python2.7/site-packages/ ..
make install

(在OSX中,将libpython2.7.so替换为libpython2.7.dylib。)

0
你是否已经执行了 apt-get build-dep python-opencv 命令?这将安装构建源代码所需的所有依赖项;如果你正在尝试在虚拟环境中安装它,则需要这样做。

我有所有这些opencv.i386:计算机视觉算法集合 opencv-devel.i386:用于使用OpenCV库的开发文件 opencv-python.i386:用于使用OpenCV的应用程序的Python绑定 我使用Fedora,错误是:“/include/c++/4.3.2/bits/stl_move.h:87: error: within this context”,我正在使用virtualenv.py。 - Cătălin George Feștilă
@CatalinFestila,你应该开启另一个讨论,因为你的问题与这个讨论不同。 - Burhan Khalid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接