OpenCV een bibliotheek voor objectherkenning in afbeeldingen en camera's

openCV

OpenCV is een gratis bibliotheek met platformonafhankelijke machine vision (bestaande versies voor GNU / Linux, Mac OS X, Windows en Android) die oorspronkelijk ontwikkeld door Intel en gebruikt in talloze toepassingenvan beveiligingssystemen met bewegingsdetectie tot procesbesturingstoepassingen waarbij objectherkenning vereist is. Dit komt omdat de publicatie ervan wordt gegeven onder de BSD-licentie, waardoor het vrijelijk kan worden gebruikt voor commerciële en onderzoeksdoeleinden met de daarin vermelde voorwaarden.

CV openen bevat meer dan 500 functies die een breed scala aan gebieden in het zichtproces bestrijken, zoals objectherkenning (gezichtsherkenning), camerakalibratie, stereovisie, robotvisie, acties in video classificeren, afbeeldingen converteren, 3D-modellen extraheren, 3D-ruimte creëren uit een stereocamerabeeld en hoogwaardige afbeeldingen creëren door afbeeldingen van lage kwaliteit te combineren.

ook biedt de mogelijkheid om te zoeken naar afbeeldingen van vergelijkbare objecten op de verzameling elementen die wordt gepresenteerd door machine learning-methoden toe te passen, markeringen te organiseren, gemeenschappelijke elementen in verschillende afbeeldingen te identificeren en automatisch defecten zoals rode ogen te elimineren.

OpenCV biedt meer dan 2500 algoritmen, zowel klassiek als weerspiegelt de nieuwste prestaties op het gebied van computer vision en machine learning-systemen. De bibliotheekcode is geschreven in C ++ en gedistribueerd onder de BSD-licentie.

Over de nieuwe versie OpenCV 4.2

Op dit moment de bibliotheek is in zijn OpenCV 4.2-versie, waarin in de DNN-module (Diep neuraal netwerk) met de implementatie van algoritmen voor machine learning op basis van neurale netwerken, heeft een backend toegevoegd om CUDA te gebruiken en experimentele ondersteuning voor de nGraph OpenVINO API werd geïmplementeerd.

Naast het gebruik van SIMD-instructies optimaliseren we de codeprestaties voor stereo-uitvoer (StereoBM / StereoSGBM), vergroten of verkleinen, maskeren, roteren, berekenen we ontbrekende kleurcomponenten en vele andere bewerkingen.

In de G-API-module (opencv_gapi), die fungeert als een motor voor verwerking efficiënte beeldvorming met behulp van op afbeeldingen gebaseerde algoritmen, ondersteunt complexere hybride algoritmen voor computervisie en deep machine learning. Biedt ondersteuning voor de Intel Inference Engine. Ondersteuning toegevoegd voor videostreamverwerking aan het uitvoeringsmodel.

Kwetsbaarheden (CVE-2019-5063, CVE-2019-5064) die konden leiden tot de uitvoering van aanvalscode door niet-geverifieerde gegevens in XML-, YAML- en JSON-formaten te verwerken, werden ook verholpen. Als een teken met een nulcode wordt gevonden tijdens JSON-parsing, wordt de volledige waarde naar de buffer gekopieerd, maar zonder de juiste verificatie van de limieten van het toegewezen geheugengebied.

Van de andere veranderingen gepresenteerd in deze nieuwe versie:

  • Multithread-implementatie van de pyrDown-functie toegevoegd.
  • De mogelijkheid toegevoegd om videostreams uit mediacontainers te extraheren (demuxen) met behulp van de op FFmpeg gebaseerde video-backend.
  • Een algoritme toegevoegd voor snelle frequentieselectieve reconstructie van beschadigde FSR-afbeeldingen (Frequency Selective Reconstruction).
  • RIC-methode toegevoegd voor interpolatie van typische blanco gebieden.
  • LOGOS-afwijkingsnormalisatiemethode toegevoegd.

Hoe OpenCV 4.2 te installeren?

Voor degenen die geïnteresseerd zijn om deze bibliotheek te kunnen installeren, kan de nieuwe versie krijgen evenals de informatie met betrekking tot het gebruik raadplegen en zelfs tutorials vinden op de officiële website.

De link is dit.

In dit artikel We zullen de stappen geven om de bibliotheek op een Raspberry pi te kunnen implementeren.

Om OpenCV op een Raspberry P te installerenik moet je systeem hebben, dat is Raspbian.

Van de vWe gaan een terminal openen en daarin gaan we typen de volgende opdrachten om afhankelijkheden, ontwikkelaarstools, afbeeldingspakketten en andere extra bibliotheken te installeren:

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

Tenslotte laten we de python 3-headerbestanden installeren zodat we OpenCV kunnen compileren:

sudo apt-get install python3-dev

nu laten we een Python-omgeving maken met de volgende commando's, dit om een ​​geïsoleerde site te hebben:

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

We gaan virtualenv en virtualenvwrapper installeren:

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

Ik heb dit nu gedaan we gaan openCV compileren met:

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

Nu gaan we de swap in ons systeem vergroten, want als we het laten zoals het standaard is, kan het systeem vastlopen:

sudo nano /etc/dphys-swapfile

En we gaan de CONF_SWAPSIZE variabele bewerken:

CONF_SWAPSIZE=1024

We slaan op en sluiten af ​​met ctrl + o en ctrl + x. Vervolgens typen we:

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

Nu gaan we door met compileren:

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

En klaar.