La tecnología dio ojos a computadoras "clásicas" (escritorios, portátiles y similares), teléfonos inteligentes y computadoras de una sola placa. Los sistemas informáticos han adquirido la capacidad de "ver" e interpretar lo que han visto gracias a un aspecto tecnológico que está creciendo cada vez más: la visión por ordenador. En pocas palabras, la visión por ordenador es un campo de tecnología de software que tiene como objetivo obtener, analizar y filtro las características deseadas en imágenes (estáticas o vídeos), utilizando como base la juntura de cámaras digitales, procesamiento de imágenes, inteligencia artificial y algoritmos de procesamiento de imágenes. La visión por ordenador permite a las computadoras adquirir imágenes del entorno en el que se insertan y buscar las características deseadas, mucho más rápido, eficiente y eficaz de lo que haría un ser humano. Por lo tanto, la visión por computadora dio verdaderos "ojos biónicos" a las computadoras.
El uso de la visión por computadora rompió paradigmas. Muchas cosas que antes eran muy difíciles (o incluso imposibles) de ser medidas y detectadas por los sensores ahora sólo dependen de una cámara y algoritmos de visión por ordenador para ser posible, tales como: detección de objetos en movimiento, reconocimiento facial, reconocimiento de matrículas de vehículos, estimación del recuento de población en un área pública en tiempo real y más.
En este artículo, se le presentará OpenCV, una de las bibliotecas de visión por ordenador más potentes y populares del mercado. Aun así, aprenderá a instalar OpenCV en su Raspberry Pi 3B, lo que le permitirá comenzar sus estudios en este fascinante campo de la tecnología.
Material requerido
Para reproducir los ejemplos prácticos de este artículo, necesitará un Raspberry Pi 3B, que se muestra en la figura 1.
Es muy recomendable que utilice la tarjeta micro-SD de clase 10 en su Raspberry Pi, por lo que el uso de esta es mucho más rápido en comparación con el uso de una tarjeta micro-SD común. Además, dado el alto grado de procesamiento que OpenCV requiere para funcionar, es muy recomendable que utilice un cooler en su Raspberry Pi.
En este artículo se supone que ya está totalmente operativo con Raspberry Pi 3B, es decir, ya tiene instalando el sistema operativo, la conexión a la red (cableada o wi-fi) establecida y que puede acceder a la placa a través de SSH.
OpenCV - ¿Qué es?
OpenCV (Open Source Computer Vision Library)es una biblioteca de visión por ordenador de código abierto multiplataforma. Fue desarrollado a mediados de la década de 2000 por Intel.
OpenCV reúne todos los recursos necesarios para realizar las más variadas aplicaciones de visión artificial que puedas imaginar, cubriendo: adquisición/obtención de imágenes de cámaras digitales, procesamiento y procesamiento de imágenes fijas y vídeo (stream y vídeos grabados) y algoritmos de Inteligencia Artificial. En otras palabras, con OpenCV puede hacer:
Adquisición de imágenes: puede tomar imágenes desde una cámara digital (una cámara web convencional, por ejemplo)
Procesamiento de imágenes: trata imágenes fijas y vídeos para cambiar su tamaño, colores, etc.
Procesamiento de imágenes: puede utilizar de forma transparente las funciones de Inteligencia Artificial en OpenCV para una variedad de tareas, como reconocer objetos específicos en imágenes, caras, animales y mucho más.
Debido a que es muy popular y multiplataforma, es posible utilizar OpenCV en los más variados sistemas operativos (Windows, Linux, MacOS, Android, etc.) y con los más variados lenguajes de programación (C, C++, Python, Java y multitud de ellos). Esto hace que OpenCV sea aplicable en una amplia diversidad de proyectos comerciales y académicos. Esto contribuye en gran medida al crecimiento de la visión por computadora en todo el mundo.
Otra información muy importante sobre OpenCV es sobre su licencia para usar: en resumen, la biblioteca es gratuita para uso académico y profesional, siguiendo a la licencia BSD Intel. Es decir, puede hacer productos con OpenCV y no pagar nada en licencias y permisos de uso. Para eso, simplemente siga los términos y regulaciones de la licencia BSD Intel, disponible para su consulta en este link: https://opensource.org/licenses/intel-open-source-license.php
Para obtener más detalles e información de OpenCV, visite el sitio web oficial del proyecto: https://opencv.org/
¿Dónde se puede utilizar OpenCV?
Respondiendo de forma corta y objetiva: en cualquier proyecto que utilice visión artificial y que tenga recursos computacionales para admitir el uso de OpenCV.
Uno de los únicos puntos de atención al elegir si utilizar o no el OpenCV está en los recursos de hardware del proyecto. En general, los algoritmos que gestionan el procesamiento y el procesamiento de imágenes requieren mucha memoria y procesamiento desde el equipo en el que se ejecutan. Además, cuanto más grandes (con más resolución y calidad) sean las imágenes utilizadas, más algoritmos de procesamiento y procesamiento de imágenes funcionarán y, por lo tanto, se requerirán más recursos computacionales.
Debido a que hay una multitud de posibilidades de proyecto con visión computarizada y OpenCV, también hay una multitud de casos de uso de diferentes recursos computacionales para proyectos con OpenCV. Por esta razón, es muy difícil (por no decir imposible) establecer una configuración mínima universal requerida para el OpenCV, ya que esto sería altamente dependiente del uso deseado. Por lo tanto, en una vista más práctica, es muy recomendable realizar mediciones de rendimiento mientras se ejecuta el OpenCV en su proyecto, con el fin de tener una idea práctica de cuánto el OpenCV está exigiendo del hardware de su proyecto en una tarea determinada y si será necesario actualización de hardware o no.
Tener una referencia práctica, proyectos que impliquen la adquisición, tratamiento y procesamiento de imágenes (estáticas o de vídeo) con el fin de la detección y reconocimiento facial, detección y recuperación de textos en imágenes y buscar y contar objetos en una imagen por lo general se puede ejecutar con OpenCV en una Raspberry Pi 3B tranquilamente. Sólo reforzando: en estos casos, es muy recomendable utilizar un cooler para evitar que los componentes del procesador alcancen temperaturas muy altas (lo que puede disminuir la vida útil de la misma).
Compilación e instalación del OpenCV en la Raspberry Pi 3B
Ahora que ya sabe lo que es el OpenCV, para qué sirve y dónde se puede usar, y llegada la hora de instalarlo. Como muchos de los proyectos que involucran visión por computadora hoy en día se ejecutan utilizando como hardware Single-Board Computers, creo que es una buena opción para enseñar el procedimiento de compilación e instalación del OpenCV en la Raspberry Pi (más específicamente en la versión 3B, la más popular en el momento de escribir este artículo). Esta elección se basa en el echo de que la popularidad de la Raspberry Pi es enorme y usted, el lector, probablemente debería tener uno cerca.
Para facilitar este proceso, creé un script que, cuando se ejecuta en Raspberry Pi 3B, ya instala automáticamente todas las dependencias necesarias de OpenCV, así como la compilación e instalación de este también. El script considera que el OpenCV se utilizará en la versión 3.X del Python . El script completo está a continuación.
# ¡bin/bash
echo ""
echo "-------------------------------------------------------------------"
echo " Instalando todos los paquetes necesarios para el OpenCV y Python 3..."
echo "-------------------------------------------------------------------"
echo ""
sudo apt-get install -y build-essential cmake pkg-config
sudo apt-get install -y libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install -y libxvidcore-dev libx264-dev
sudo apt-get install -y libgtk2.0-dev
sudo apt-get install -y libatlas-base-dev gfortran
sudo apt-get install -y python3-dev python3-pip
echo ""
echo "----------------------------------------"
echo "OpenCV 3.1.0 - download del código fuente "
echo "----------------------------------------"
echo ""
cd ~
wget -El opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
unzip opencv.zip
wget -El opencv_contrib zip
https://github.com/Itseez/opencv_contrib/archive/3.1.0..zip
unzip opencv_contrib.zip
echo ""
echo "-------------------------------------"
echo " Instalando numpy y Scipy (Python3)..."
echo "-------------------------------------"
echo ""
sudo pip3 install numpy scipy
echo ""
echo "--------------------------"
echo " Copilando OpenCV 3.1.0..."
echo "--------------------------"
echo ""
cd ~/opencv-3.1.0/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D ENABLE_PRECOMPILED_HEADERS=OFF \
-D CMAKE_INSTALL_PREFIX=/usr/lugar \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
-D BUILD_EXAMPLES=ON.
make -j4
echo ""
echo "---------------------------"
echo " Instalando OpenCV 3.1.0..."
echo "---------------------------"
echo ""
sudo make install
echo ""
echo "-------------------------"
echo " Finalizando la instalación..."
echo "-------------------------"
echo ""
sudo ldconfig
echo ""
echo "----------------------"
echo" ¡Instalación terminada!"
echo "----------------------"
echo ""
Para ejecutar este script, siga el procedimiento que se indica a continuación:
En el terminal (a través de SSH), vaya al directorio principal de Raspberry Pi. Para hacer esto, utilice el siguiente comando:
cd ~ .
1. Abra el editor de texto nano para el archivo de script, que se llamará opencv_compile_script.sh. Haga esto usando el siguiente comando:
nano opencv_compile_script.sh
Copie (Ctrl + C) y pegue (usando las teclas Ctrl + Alt + V) el contenido del script proporcionado anteriormente en el editor de texto nano.
2. Salga del editor del texto nano y guarde el contenido insertado presionando Ctrl + X y luego la tecla S (o Y si su sistema operativo Raspberry Pi está en inglés).
3. Conceda el permiso de ejecución al script mediante el siguiente comando:
chmod +x opencv_compile_script.sh
Por último, ejecute el script como un super usuario, como comando abajo. La compilación e instalación OpenCV tomará alrededor de dos horas (si utiliza una tarjeta micro-SD de clase 10 como se recomienda). Es importante que durante este procedimiento no utilice el Raspberry Pi para nada más, ya que utilizará muchos recursos computacionales (procesamiento y memorias) de la placa.
sudo ./opencv_compile_script.sh
4. Una vez completado la ejecución del script, puede probar si todo salió bien abriendo el Python 3 e importando la biblioteca OpenCV. Para eso, ejecute los siguientes comandos:
python3
Esto abrirá el intérprete de Python 3. En él, digite:
import cv2
Si no hay errores en la ejecución de "import cv2" en el intérprete de Python 3, el OpenCV fue compilado e instalando correctamente. Para salir del intérprete de Python 3, presione las teclas Ctrl + D.
Comprendiendo el script de compilación e instalación del OpenCV en la Raspberry Pi 3B
Para comprender mejor el script utilizado para la compilación e instalación del OpenCV en la Raspberry Pi 3B, lo dividiremos en seis secciones.
En la primera sección, se instalan todas las dependencias del OpenCV. Esto se puede ver a continuación.
echo ""
echo "-------------------------------------------------------------------"
echo" Instalando todos los paquetes necesarios para OpenCV y Python 3..."
echo "-------------------------------------------------------------------"
echo ""
sudo apt-get install -y build-essential cmake pkg-config
sudo apt-get install -y libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install -y libxvidcore-dev libx264-dev
sudo apt-get install -y libgtk2.0-dev
sudo apt-get install -y libatlas-base-dev gfortran
sudo apt-get install -y python3-dev python3-pip
En la segunda sección del código, se descarga el código fuente del OpenCV desde su repositorio oficial en el Github. Se descarga la versión 3.1.0, una de las versiones más estables de la actualidad. Esta sección es la siguiente:
echo ""
echo "----------------------------------------"
echo " OpenCV 3.1.0 - download del código fuente "
echo "----------------------------------------"
echo ""
cd ~
wget -El opencv zip https://github.com/Itseez/opencv/archive/3.1.0.zip
unzip opencv.zip
wget -El opencv_contrib zip
https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
unzip opencv_contrib.zip
En la tercera sección, se instalan bibliotecas Python (considerando el Python 3, la versión de destino de Python en este procedimiento) importantes para el tratamiento y procesamiento de imágenes. Esto se hace usando el pip para el Python 3. Esta sección es la siguiente:
echo ""
echo "-------------------------------------"
echo" Instalando numpy y Scipy (Python3)..."
echo "-------------------------------------"
echo ""
sudo pip3 install numpy scipy
En la cuarta sección, ha llegado el momento de la compilación del OpenCV. Esta parte es la que más tiempo consume (se tarda alrededor de dos horas en completarse, utilizando la tarjeta micro-SD clase 10 en la Raspberry Pi 3B). Tenga en cuenta que la compilación hace uso del parámetro j4 en el comando make. Esto hace que todos los núcleos (colores) del procesador Raspberry Pi 3B se utilicen en esta compilación, lo que minimiza el tiempo total de este proceso. Sin este parámetro, el tiempo total de compilación podría aumentar de dos horas a 8 o 9 horas (o incluso más si no se utiliza la tarjeta micro-SD clase 10). Esta sección es la siguiente:
echo ""
echo "--------------------------"
echo " Copilando OpenCV 3.1.0..."
echo "--------------------------"
echo ""
cd ~/opencv-3.1.0/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D ENABLE_PRECOMPILED_HEADERS=OFF \
-D CMAKE_INSTALL_PREFIX=/usr/lugar \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
-D BUILD_EXAMPLES=ON.
make -j4
Finalmente, en la quinta y sexta secciones , se instala el OpenCV compilado y el proceso de links en Linux a la biblioteca, como se muestra a continuación:
echo ""
echo "---------------------------"
echo " Instalando OpenCV 3.1.0..."
echo "---------------------------"
echo ""
sudo make install
echo ""
echo "-------------------------"
echo " Finalizando instalación..."
echo "-------------------------"
echo ""
sudo ldconfig
Conclusión
En este artículo, aprendió lo qué es, lo que cubre y dónde es usado el OpenCV. Aun así, también aprendió a compilar e instalar el OpenCV en la Raspberry Pi 3B. De esta manera, ya dispone de los conocimientos y herramientas necesarios para iniciar sus estudios en el área de la visión por ordenador con OpenCV.
El área de la visión por computadora está creciendo en tecnología. Por lo tanto, es un campo muy atractivo para explorar, especialmente por los estudiosos y aquellos que quieren un lugar en el mercado de la tecnología en los próximos años.