2012-06-25 18 views
14

Estoy tratando de instalar OpenCV dentro de un virtualenv en mi Ubuntu Server 12.04. Encontré a thread discussing this pero no obtuve información de él.Ejecutando OpenCV desde un Python virtualenv

Intenté usar pip install pyopencv pero falló.

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

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

error: command 'gcc' failed with exit status 1 

Este error sólo se produce la segunda vez que funciono pip install. Si elimino la carpeta build/ que rehace, obtengo este error.

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

Tengo instalados al menos los siguientes paquetes apt.

build-essential 
uuid-dev 
python-dev 
python-pip 
libpq-dev 
cmake 
libboost-dev 
libcv-dev 
libcvaux-dev 
libboost-python-dev 
libboost1.48-dev 

¿Cómo puedo instalar OpenCV dentro de mi virtualenv?

+0

que estoy experimentando este mismo tema. Noté, sin embargo, que 'pyopencv' corresponde a este proyecto http://code.google.com/p/pyopencv/ y no a los enlaces de python que vienen con opencv 2.X –

Respuesta

13

Disparó un virtualenv y siguió esta guía: http://www.samontab.com/web/2011/06/installing-opencv-2-2-in-ubuntu-11-04/, hasta manipular y copiar los objetos compartidos cv. En su lugar, copié cv.so (de mi directorio OpenCV-2.2.0/lib) en mis paquetes de sitios virtualenv (por ejemplo, env/lib/python2.7/site-packages /). Una vez que cv.so estaba en mi entorno, pude importar cv dentro de python.

+1

Gracias, copiar los objetos compartidos era lo que era ¡desaparecido!La única diferencia fue que copié cv.py [c] y cv2.so de/usr/lib/pymodules, análoga a https://github.com/ingenuitas/SimpleCV#installation –

0

¿Ya hiciste apt-get build-dep python-opencv? Esto instalará todas las dependencias requeridas para compilar desde el origen; que necesita si está tratando de instalarlo en un entorno virtual.

+0

Tengo todo esto opencv.i386: Colección de algoritmos para visión artificial opencv-devel.i386: Archivos de desarrollo para usar la biblioteca OpenCV opencv-python.i386: enlaces de Python para aplicaciones que usan OpenCV Uso Fedora, el error es: "/ include/C++/4.3.2/bits/stl_move.h: 87: error: dentro de este contexto "I usando virtualenv.py. –

+0

@CatalinFestila debe abrir otra discusión ya que su pregunta es diferente de lo que está hablando. –

9

Aquí está la manera más limpia, usando pyenv y el complemento virtualenv.

Instale Python con soporte de biblioteca compartida (para obtener un libpython2.7.dylib en Mac OS X o libpython2.7.so en Linux).

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

Crea el virtualenv, basado en la versión de python que acabamos de instalar.

pyenv virtualenv 2.7.6 myvirtualenv 

Activar el virtualenv.

pyenv shell myvirtualenv 
pyenv rehash 

Instalar numpy. De lo contrario, opencv no se enlazará correctamente con Python.

pip install numpy 

Establezca el prefijo de la instalación de python.

PREFIX_MAIN=`pyenv virtualenv-prefix` 

Establece el prefijo del entorno. (Sic! El nombre de estos comandos pyenv son un poco engañosa!)

PREFIX=`pyenv prefix` 

Ahora configurar e instalar OpenCV. Tenga en cuenta que los binarios y paquetes de opencv se instalarán en nuestro virtualenv mientras se usa la biblioteca dinámica e incluye la instalación de 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 

(en OSX, reemplace libpython2.7.so con libpython2.7.dylib.)