OpenCV 3.0 Python Guide

Introducción y visión general

Este documento contiene instrucciones para instalar y migrar a la última versión de OpenCV (versión 3) y los bindings de Python. Además de algunos cambios en la API, también hay cambios en la interfaz de Python (por ejemplo, la eliminación de cv2.cv) que pueden requerir cambios en el código existente para trabajar con la nueva versión del módulo cv2. Después de la instalación, consulte la siguiente página, Migración & Cambios, para obtener detalles sobre los cambios en el módulo y para obtener ayuda para migrar el código Python existente a la nueva versión.

Esta página cubre la instalación de OpenCV 3 en Windows (utilizando binarios pre-construidos) y Linux (compilado desde la fuente), incluyendo la interfaz de Python (el módulo cv2). OpenCV se puede descargar desde el sitio web oficial de OpenCV. Tenga en cuenta que esta guía está escrita en base a la versión 3.1.0 de OpenCV. Después de la instalación, se recomienda comprobar la versión de OpenCV que está utilizando Python:

import cv2print cv2.__version__# Should print 3.0.0-rc1 or newer.

Nota que aunque OpenCV 3 es la última versión, por convención, el módulo sigue llamándose cv2.

Instalación en Windows (binarios preconstruidos)

Usar binarios preconstruidos es la forma más rápida de conseguir un entorno OpenCV de Python en Windows. Actualmente, sólo la versión de Python 2 del módulo cv2 está construida e incluida en la última versión de Windows. El apoyo a Python 3 (así como la adición de otras características / módulos no estándar), requiere la compilación de la fuente – ver la documentación oficial de OpenCV para más detalles.

Descarga de OpenCV y Python

Para empezar, descargar OpenCV para Windows (versión 3.1, opencv-3.1.0.exe), y extraerlo a un directorio de su elección. La compilación de Windows incluye un módulo de 32 y 64 bits para Python 2.7.

Antes de continuar, asegúrese de que tiene una instalación de Python 2.7 que funcione, que puede descargarse del sitio web de Python. Esta guía fue probada usando Python 2.7.9 (instalador x86 / instalador x64). Cuando se instala, se recomienda permitir que el instalador agregue Python a su variable de entorno PATH, para que pueda ejecutar python y pip desde un símbolo del sistema.

Instalación de las dependencias del módulo

El módulo de Python OpenCV cv2 requiere la pila NumPy y SciPy. Para conseguirlo, primero asegúrese de que tiene un entorno python que funciona, y de que tiene pip instalado (si no es así, utilice los enlaces anteriores, y asegúrese de que la carpeta de Python está en su variable PATH).

Christoph Gohlke proporciona actualmente algunos paquetes (no oficiales) de Python preconstruidos para Windows, incluyendo NumPy y SciPy. Descargue las últimas versiones estables de NumPy y SciPy, e instálelas llamando a pip install .whl desde un símbolo del sistema. Tenga en cuenta que debe descargar la versión correspondiente a su entorno Python (2.7 en este caso) y a la longitud de las palabras. Por ejemplo, en sistemas/intérpretes de 32 bits:

pip install numpy-1.9.2+mkl-cp27-none-win32.whlpip install scipy-0.15.1-cp27-none-win32.whl

Y para sistemas/intérpretes de 64 bits:

pip install numpy-1.9.2+mkl-cp27-none-win_amd64.whlpip install scipy-0.15.1-cp27-none-win_amd64.whl

Después de la instalación, deberías poder ejecutar import numpy y import scipy desde un intérprete de Python para verificar que los módulos se han instalado correctamente. Puedes comprobar qué versiones de NumPy y SciPy están instaladas desde numpy.__version__ y scipy.__version__, respectivamente.

Instalación del módulo Python-OpenCV

Por último, necesitamos copiar el módulo OpenCV en los paquetes locales de Python. En los archivos extraídos de opencv-3.0.0-rc1.exe, vaya a la carpeta opencv\build\python.7\, y abra la carpeta x86\ (para 32 bits) o x64\ (para 64 bits). En cada una, habrá un archivo cv2.pyd.

Copie cv2.pyd directamente en el directorio Lib\site-packages\ de su instalación de Python. Para la mayoría de los usuarios, esto se encontrará en:

C:\Python27\Lib\site-packages 

Por último, asegúrese de que los archivos .dll de OpenCV están en algún lugar en el %PATH% de su sistema, especialmente el archivo opencv_ffmpeg310.dll (o opencv_ffmpeg310_64.dll para los sistemas de 64 bits) necesario para cargar los archivos de vídeo.

Continúe con la sección de verificación de la instalación para asegurarse de que todo se ha instalado correctamente, y la nueva versión de OpenCV se está utilizando. También asegúrese de revisar la siguiente página, Migración & Cambios, para obtener detalles sobre los cambios en el módulo y la actualización del código existente.

Instalación en Linux (compilación desde el código fuente)

Aunque esta guía está escrita para Ubuntu 12.04/14.04 y otras variantes (por ejemplo, Xubuntu/Lubuntu/Kubuntu), el proceso debería ser en gran medida el mismo en otras versiones, así como en distribuciones Linux similares a Debian. Preste atención a la salida de cada comando para asegurarse de que todo ha funcionado correctamente, y si hay algún problema durante el proceso de construcción, consulte la parte inferior de este documento para posibles mitigaciones

Descarga de OpenCV

Para empezar, descargue OpenCV para Linux (versión 3.1.0, opencv-3.1.0.zip), y extráigalo a un directorio de su elección (por ejemplo, ~/opencv-src). Cree una carpeta build dentro de la carpeta donde se extrajo el archivo (el directorio que contiene el archivo CMakeLists.txt), y abra una sesión de terminal allí. Por ejemplo:

# Assuming the files were extracted to ~/opencv-src/...cd ~/opencv-srcmkdir buildcd build

Ejecuta todos los comandos siguientes desde la propia subcarpeta build, para que los archivos compilados se coloquen allí.

Instalar las dependencias de compilación

Para compilar OpenCV, debemos asegurarnos de que las dependencias necesarias están disponibles, incluyendo las propias herramientas de compilación. Podemos obtener las requeridas usando apt en Ubuntu, pero primero, asegúrate de que la lista de paquetes está actualizada ejecutando apt-get update. A continuación, ejecuta los siguientes comandos para obtener los paquetes requeridos (ver más abajo una lista de todos en una sola línea):

sudo apt-get install cmake build-essential pkg-configsudo apt-get install libgtk2.0-dev libtbb-devsudo apt-get install python-dev python-numpy python-scipysudo apt-get install libjasper-dev libjpeg-dev libpng-dev libtiff-dev sudo apt-get install libavcodec-dev libavutil-dev libavformat-dev libswscale-devsudo apt-get install libdc1394-22-dev libv4l-dev

En una sola línea:

sudo apt-get install cmake build-essential pkg-config libgtk2.0-dev libtbb-dev python-dev python-numpy python-scipy libjasper-dev libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libdc1394-22-dev libv4l-dev

Ten en cuenta que para los módulos/características adicionales de OpenCV (por ejemplo, el soporte de GPU/CUDA, o el módulo de Python 3), necesitarás descargar los respectivos paquetes de desarrollo/SDK para esas bibliotecas también. Las dependencias enumeradas anteriormente sólo cubren la construcción de OpenCV en sí y el módulo de Python 2.7 cv2.

Compilación e instalación de OpenCV

Ahora que tenemos las dependencias de construcción requeridas, ejecute cmake (de nuevo, en el directorio build/ que hemos creado) para generar el Makefile para construir OpenCV:

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

Si hay algún error, asegúrese de que ha descargado todos los paquetes necesarios – la salida debe ayudar a rastrear lo que falta. Para asegurarse de que el módulo de Python se construirá, debería ver python2 en la lista de módulos configurados después de ejecutar cmake:

-- Linker flags (Release):-- Linker flags (Debug):-- Precompiled headers: YES---- OpenCV modules:-- To be built: hal core flann imgproc ml python2

Si no ve el módulo python2 en la lista “To be built”, compruebe que tiene los paquetes de desarrollo de Python adecuados instalados, elimine todos los archivos de la carpeta build/ e intente ejecutar el comando cmake de nuevo.

Ahora, podemos construir OpenCV (y el módulo de Python) utilizando make, e instalarlo en nuestro sistema:

makesudo make install

Asegúrese de que la construcción fue exitosa después de llamar a make, y compruebe la salida antes de instalar. Si se encuentra con problemas/errores de compilación, asegúrese de nuevo de que tiene todas las dependencias y archivos de cabecera necesarios en su sistema. Si hay problemas de compilación con el propio OpenCV, consulte la sección de problemas de compilación de Linux a continuación para algunas posibles soluciones.

Al instalar OpenCV 3.0-rc1 en Ubuntu 12.04, me encontré con errores de compilación en relación con algunas entradas de códecs #define que faltaban. Como se ha mencionado, los pasos para hacer esto se detallan a continuación en caso de que se ejecute en el mismo problema (el problema debe ser resuelto en la versión 3.1.0 y superior). Ubuntu 14.04 y superiores deberían construir con éxito sin requerir ninguna modificación.

Si la construcción fue exitosa, pero no puedes import cv2 desde un shell de Python después de ejecutar make install, puedes instalar el módulo manualmente copiando el archivo cv2.so que acabamos de construir en la carpeta build/lib/ a /usr/local/lib/python2.7/dist-packages/. Desde la carpeta build/, esto se puede hacer mediante:

sudo cp lib/cv2.so /usr/local/lib/python2.7/dist-packages/

Después de este paso, el módulo cv2 está instalado, y ahora puede ser importado por su entorno de Python. Continúe en la sección de Verificación de la Instalación para asegurarse de que todo fue instalado correctamente, y más importante, que la versión correcta de OpenCV está siendo utilizada por Python. También puede consultar la siguiente página, Migración & Cambios, para obtener detalles sobre los cambios en el módulo cv2, y qué cambios hay que hacer en el código existente para que funcione con el módulo actualizado.

Verificación de la instalación

Como se mencionó anteriormente, puede verificar que el módulo cv2 se instaló correctamente ejecutando lo siguiente en un shell de Python:

import cv2print cv2.__version__

Si se imprime la cadena de versión correcta (3.0.0-rc1 o más reciente si utilizó una versión más reciente), ¡todo está instalado correctamente en este punto!

Tenga en cuenta que hay algunos cambios importantes en la propia jerarquía de módulos cv2, y los programas de Python escritos con OpenCV 2.4.x en mente pueden dejar de funcionar correctamente. Consulte la siguiente sección, Migración & Cambios para obtener detalles sobre los cambios, y cómo modificar los programas para hacer frente a los cambios.

Problemas de compilación en Linux

En algunos sistemas puede encontrar problemas al compilar OpenCV en sí, dependiendo de los paquetes disponibles. Si los archivos de cabecera adecuados están disponibles, pero los problemas de compilación todavía surgen, trate de ver si hay alguna solución a continuación para el problema.

Undefined AV_CODEC_ID_... in ffmpeg_codecs.hpp

Si se encuentra con un problema donde los errores de compilación son causados por ciertos códecs que no están definidos, puede descargar una versión más reciente de ffmpeg_codecs.hpp desde aquí, y reemplazarlo en el código fuente que descargó/extrajo en la carpeta modules/videoio/src/.

Alternativamente, puede declararlos manualmente editando el propio archivo ffmpeg_codecs.hpp añadiendo la entrada de códecs que falta para H263I, y renombrando WNV a WNV1. Puedes ver qué cambios hay que hacer viendo este commit del proyecto GitHub de OpenCV.

Una vez actualizado el archivo, puedes llamar a make de nuevo desde la carpeta build/, y OpenCV debería terminar de compilar sin errores ahora.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.