Desde Linux David Naranjo  

OpenCV una biblioteca para el reconocimiento de objetos en imágenes y cámaras

openCV

OpenCV es una biblioteca libre de visión artificial multiplataforma (existiendo versiones para GNU/Linux, Mac OS X, Windows y Android) que fue originalmente desarrollada por Intel y que se ha utilizado en infinidad de aplicaciones, desde sistemas de seguridad con detección de movimiento, hasta aplicaciones de control de procesos donde se requiere reconocimiento de objetos. Esto se debe a que su publicación se da bajo licencia BSD, que permite que sea usada libremente para propósitos comerciales y de investigación con las condiciones en ella expresadas.

Open CV contiene más de 500 funciones que abarcan una gran gama de áreas en el proceso de visión, como reconocimiento de objetos (reconocimiento facial), calibración de cámaras, visión estérea, visión robótica, clasificar acciones en video, convertir imágenes, extraer modelos 3D, crear espacio 3D desde una imagen de cámaras estéreo creando imágenes de alta calidad mediante la combinación de imágenes de baja calidad.

Tambien ofrece la posibilidad de buscar imagenes de objetos similares al conjunto de elementos presentado aplicando métodos de aprendizaje automático, organizando marcadores, identificando elementos comunes en diferentes imágenes, eliminando automáticamente defectos tales como ojos rojos.

OpenCV proporciona más de 2500 algoritmos, tanto clásicos como que reflejan los últimos logros en el campo de la visión por computadora y los sistemas de aprendizaje automático. El código de la biblioteca está escrito en C ++ y distribuido bajo la licencia BSD.

Sobre la nueva versión OpenCV 4.2

Actualmente la biblioteca se encuentra en su versión OpenCV 4.2, en la cual en el módulo DNN (Red neuronal profunda) con la implementación de algoritmos de aprendizaje automático basados ​​en redes neuronales, se agregó un back-end para usar CUDA y se implementó el soporte experimental para la API nGraph OpenVINO.

Además de que utilizando las instrucciones SIMD, optimizamos el rendimiento del código para la salida estéreo (StereoBM/StereoSGBM), redimensionamos, enmascaramos, rotamos, calculamos componentes de color faltantes y muchas otras operaciones.

En el módulo G-API (opencv_gapi), que actúa como un motor para el procesamiento eficiente de imágenes utilizando algoritmos basados ​​en gráficos, admite algoritmos híbridos más complejos para la visión por computadora y el aprendizaje automático profundo. Proporciona soporte para el motor Intel Inference Engine. Se agregó soporte para el procesamiento de transmisiones de video al modelo de ejecución.

También se corrigieron vulnerabilidades (CVE-2019-5063, CVE-2019-5064) que podrían conducir a la ejecución de código de ataque al procesar datos no verificados en formatos XML, YAML y JSON. Si se encuentra un carácter con un código nulo durante el análisis JSON, el valor completo se copia en el búfer, pero sin una verificación adecuada de los límites del área de memoria asignada.

De los demás cambios que se presentan en esta nueva versión:

  • Se agregó la implementación multiproceso de la función pyrDown.
  • Se agregó la capacidad de extraer transmisiones de video de contenedores de medios (demuxing) usando el backend de video basado en FFmpeg.
  • Se agregó un algoritmo para la reconstrucción rápida selectiva de frecuencia de imágenes dañadas FSR (Reconstrucción selectiva de frecuencia).
  • Método RIC agregado para la interpolación de áreas en blanco típicas.
  • Método de normalización de desviación de LOGOS agregado.

¿Cómo instalar OpenCV 4.2?

Para quienes estén interesados en poder instalar esta biblioteca, pueden obtener la nueva versión así como consultar la información relacionada con el uso e incluso encontrar tutoriales desde su sitio web oficial.

El enlace es este.

En este articulo proporcionaremos los pasos para poder implementar la biblioteca en una Raspberry pi.

Para realizar la instalación de OpenCV en una Raspberry Pi debemos contar con su sistema, el cual es Raspbian.

Desde el vamos a abrir una terminal y en ella vamos a teclear los siguientes comandos para instalar dependencias, herramientas de desarrollador, paquetes de imagen entre otras bibliotecas extras:

sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libfontconfig1-dev libcairo2-dev libgdk-pixbuf2.0-dev libpango1.0-dev libgtk2.0-dev libgtk-3-dev libatlas-base-dev gfortran libhdf5-dev libhdf5-serial-dev libhdf5-103 libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5

Por último, instalemos los archivos de encabezado de Python 3 para que podamos compilar OpenCV:

sudo apt-get install python3-dev

Ahora vamos a crear un entorno Python con los siguientes comandos, esto con la finalidad de tener un sitio aislado:

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo python3 get-pip.py
sudo rm -rf ~/.cache/pip

Vamos a instalar virtualenv y virtualenvwrapper:

sudo pip install virtualenv virtualenvwrapper
nano ~/.bashrc

# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

source /usr/local/bin/virtualenvwrapper.sh
source ~/.bashrc
mkvirtualenv cv -p python3
pip install "picamera[array]"

Hecho esto ahora vamos a realizar la compilación de openCV con:

cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.2.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.2.0.zip
unzip opencv.zip
unzip opencv_contrib.zip
mv opencv-4.2.0 opencv
mv opencv_contrib-4.2.0 opencv_contrib

Ahora vamos a aumentar el swap en nuestro sistema ya que si lo dejamos como esta por defecto el sistema se puede colgar:

sudo nano /etc/dphys-swapfile

Y vamos a editar la variable CONF_SWAPSIZE:

CONF_SWAPSIZE=1024

Guardamos y cerramos con ctrl + o y ctrl + x. Después tecleamos:

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

Ahora vamos a procedes a compilar:

workon cv
pip install numpy
cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D BUILD_TESTS=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D CMAKE_SHARED_LINKER_FLAGS=-latomic \
-D BUILD_EXAMPLES=OFF ..
make -j4
sudo make install
sudo ldconfig
cd /usr/local/lib/python3.7/site-packages/cv2/python-3.7
sudo mv cv2.cpython-37m-arm-linux-gnueabihf.so cv2.so
cd ~/.virtualenvs/cv/lib/python3.7/site-packages/
ln -s /usr/local/lib/python3.7/site-packages/cv2/python-3.7/cv2.so cv2.so

Y listo.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.