Instalar OpenCV en Raspbian Jessie

Instalar OpenCV en Raspbian Jessie

OpenCV (Open Source Computer Vision) es una librería software de código abierto sobre visión artificial.

Es multiplataforma por lo que existen distintas versiones en C/C++, Java, Python y distintos soportes para cada sistema operativo (Linux, Mac, Windows …).

Contiene más de 500 funciones que abarcan una gran gama de áreas en el proceso de visión, como reconocimiento de objetos o reconocimientos facial, calibración de cámaras, visión estérea y visión robótica.

Siguiendo los pasos que vamos a enumerar a continuación podemos instalar OpenCV en nuestra Raspberry Pi con Raspbian Jessie, en unas dos horas.

Lo primero de todo será comprobar que la Raspberry está actualizada:

sudo apt-get update

sudo apt-get upgrade

sudo rpi-update

sudo reboot

Una vez actualizada y reiniciada, seguimos con los siguientes pasos, para instalar las dependencias:

sudo apt-get install build-essential git cmake pkg-config

sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

sudo apt-get install libxvidcore-dev libx264-dev

sudo apt-get install libgtk2.0-dev

sudo apt-get install libatlas-base-dev gfortran

sudo apt-get install python2.7-dev python3-dev

Descargamos y descomprimimos el código fuente de Open CV:

cd ~

wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.0.0.zip

unzip opencv.zip

wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.0.0.zip

unzip opencv_contrib.zip

Configuramos Python, puesto que en nuestro caso será con el que utilizaremos OpenCV en la Raspberry Pi.

wget https://bootstrap.pypa.io/get-pip.py

sudo python get-pip.py

Configuramos el entorno virtual:

sudo pip install virtualenv virtualenvwrapper

sudo rm -rf ~/.cache/pip

Ahora abrimos el fichero del perfil, y añadimos las ultimas líneas:

sudo nano ~/.profile

profile

El archivo debe quedar con el aspecto anterior, guardamos con Ctrl+X y ejecutamos lo siguiente:

source ~/.profile

mkvirtualenv cv

Siempre que cerremos sesión o apaguemos la Raspberry, si queremos trabajar en el entorno virtual tenemos que ejecutar lo siguiente:

source ~/.profile

workon cv

mkvitualenv_cv

Y ya nos aparecerán las letras (cv), indicando que estamos en el entorno virtual

work_on_cv

Una vez estemos en el entorno virtual, instalamos numpy

pip install numpy

cd ~/opencv-3.0.0/

Y una vez estamos ubicados en la carpeta de opencv ejecutamos:

mkdir build

Compilamos e instalamos OpenCV:

cd build

Y ahora ejecutamos el siguiente comando:

cmake -D CMAKE_BUILD_TYPE=RELEASE \

-D CMAKE_INSTALL_PREFIX=/usr/local \

-D INSTALL_C_EXAMPLES=ON \

-D INSTALL_PYTHON_EXAMPLES=ON \

-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.0.0/modules \

-D BUILD_EXAMPLES=ON ..

Antes de seguir, nos aseguramos que en el apartado de Python 2, tanto el intérprete, como numpy apuntan al entorno virtual.

opencv_python_numpy

Compilamos:

make -j4

(Si queremos compilar utilizando 4 núcleos)

o make simplemente (compilación más lenta)

Empezará la compilación que puede durar hora y media si se usan los 4 núcleos, o más si sólo se utiliza uno.

Si todo sale bien, una vez que llegue al 100 % de la compilación y si no se han recibido mensajes de error, ya tendremos casi listo nuestro Open CV.

opencv_built

En caso de recibir error, puedes probar a borrar la compilación con el comando make clean

y una vez eliminada, volver a probar ejecutando make.

Una vez compilado sin errores, seguimos con el siguiente paso:

sudo make install

sudo ldconfig

cd ~/.virtualenvs/cv/lib/python2.7/site-packages/

ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so

Y ya tenemos listo nuestro OpenCV en la Raspberry Pi.

Para verificar que todo ha ido correctamente podemos hacer la siguiente comprobación:

python

Si está correctamente instalado, devolverá la versión entre otros datos. Y lo mismo ocurre con cv2:

cv2.__version__

Gracias a http://www.pyimagesearch.com/2015/10/26/how-to-install-opencv-3-on-raspbian-jessie/