OpenCV je bezplatná knihovna strojového vidění napříč platformami (stávající verze pro GNU / Linux, Mac OS X, Windows a Android), který byl původně vyvinutý společností Intel a používaný v nesčetných aplikacíchod bezpečnostních systémů s detekcí pohybu až po aplikace pro řízení procesů, kde je vyžadováno rozpoznání objektu. Je to proto, že jeho zveřejnění je vydáno na základě licence BSD, která umožňuje jeho volné použití pro komerční a výzkumné účely za podmínek v něm uvedených.
Otevřete životopis obsahuje více než 500 funkcí pokrývajících širokou škálu oblastí v procesu vidění, jako je rozpoznávání objektů (rozpoznávání obličeje), kalibrace kamery, stereofonní vidění, robotické vidění, klasifikace akcí ve videu, převádění obrazů, extrahování 3D modelů, vytváření 3D prostoru ze obrazu stereokamery a vytváření vysoce kvalitních obrazů kombinací obrazů nízké kvality.
Také nabízí možnost vyhledávat obrázky podobných objektů na sadu prvků prezentovaných použitím metod strojového učení, uspořádáním značek, identifikací společných prvků v různých obrazech, automatickým odstraněním vad, jako jsou červené oči.
OpenCV poskytuje více než 2500 XNUMX algoritmů, klasické i reflektující nejnovější úspěchy v oblasti systémů počítačového vidění a strojového učení. Kód knihovny je napsán v C ++ a distribuován pod licencí BSD.
O nové verzi OpenCV 4.2
Nyní knihovna je ve verzi OpenCV 4.2, ve kterém v modulu DNN (Deep neuron network) s implementací algoritmů strojového učení založených na neuronových sítích, přidán backend pro použití CUDA a byla implementována experimentální podpora pro nGraph OpenVINO API.
Kromě použití pokynů SIMD optimalizujeme výkon kódu pro stereofonní výstup (StereoBM / StereoSGBM), měníme velikost, maskujeme, rotujeme, počítáme chybějící barevné komponenty a mnoho dalších operací.
V modulu G-API (opencv_gapi), který funguje jako motor pro zpracování efektivní zobrazování pomocí grafických algoritmů, podporuje složitější hybridní algoritmy pro počítačové vidění a hluboké strojové učení. Poskytuje podporu pro Intel Inference Engine. Přidána podpora pro zpracování video streamu do modelu provedení.
Byly také opraveny chyby zabezpečení (CVE-2019-5063, CVE-2019-5064), které by mohly vést ke spuštění útočného kódu zpracováním neověřených dat ve formátech XML, YAML a JSON. Pokud je při analýze JSON nalezen znak se značkou null, celá hodnota se zkopíruje do vyrovnávací paměti, ale bez řádného ověření limitů oblasti přidělené paměti.
Z dalších změn představeno v této nové verzi:
- Přidána implementace funkce pyrDown s více vlákny.
- Přidána možnost extrahovat video streamy z mediálních kontejnerů (demuxing) pomocí video backendu založeného na FFmpeg.
- Přidán algoritmus pro rychlou frekvenční selektivní rekonstrukci poškozených obrazů FSR (Frequency Selective Reconstruction).
- Přidána metoda RIC pro interpolaci typických prázdných oblastí.
- Přidána metoda normalizace odchylky LOGOS.
Jak nainstalovat OpenCV 4.2?
Pro ty, kteří mají zájem o instalaci této knihovny, můžete získat novou verzi stejně jako konzultovat informace týkající se používání a dokonce najít návody z jeho oficiálních webových stránek.
V tomto článku Poskytneme kroky, abychom mohli implementovat knihovnu na Raspberry pi.
Instalace OpenCV na Raspberry PMusím mít váš systém, který je Raspbian.
Z vOtevřeme terminál a v něm budeme psát následující příkazy pro instalaci závislostí, nástroje pro vývojáře, balíčky obrázků a další knihovny:
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
Konečně, Nainstalujeme si hlavičkové soubory Pythonu 3 abychom mohli sestavit OpenCV:
sudo apt-get install python3-dev
Nyní vytvořme prostředí Pythonu s následujícími příkazy, aby to mělo izolovaný web:
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo python3 get-pip.py
sudo rm -rf ~/.cache/pip
Budeme instalovat virtualenv a 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]"
Hotovo budeme kompilovat openCV s:
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
Nyní zvýšíme swap v našem systému, protože pokud ho necháme ve výchozím nastavení, systém může přestat reagovat:
sudo nano /etc/dphys-swapfile
A budeme upravovat proměnnou CONF_SWAPSIZE:
CONF_SWAPSIZE=1024
Ukládáme a zavíráme pomocí ctrl + o a ctrl + x. Potom zadáme:
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
Nyní budeme pokračovat v kompilaci:
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
A to je vše