OpenCV biblioteka do rozpoznawania obiektów w obrazach i kamerach

otwórzCV

OpenCV to bezpłatna biblioteka wieloplatformowego widzenia maszynowego (istniejące wersje dla systemów GNU / Linux, Mac OS X, Windows i Android), który był pierwotnie opracowany przez firmę Intel i używany w niezliczonych aplikacjachod systemów bezpieczeństwa z detekcją ruchu po aplikacje sterujące procesami, w których wymagane jest rozpoznawanie obiektów. Dzieje się tak, ponieważ jego publikacja jest udostępniana na licencji BSD, co pozwala na swobodne wykorzystanie jej w celach komercyjnych i badawczych na warunkach w niej określonych.

Otwórz CV zawiera ponad 500 funkcji obejmujących szeroki zakres obszarów procesu widzenia, takie jak rozpoznawanie obiektów (rozpoznawanie twarzy), kalibracja kamery, widzenie stereoskopowe, widzenie robotyczne, klasyfikacja działań w wideo, konwersja obrazów, wyodrębnianie modeli 3D, tworzenie przestrzeni 3D z obrazu z kamery stereo, tworzenie wysokiej jakości obrazów poprzez łączenie obrazów niskiej jakości.

Również oferuje możliwość wyszukiwania zdjęć podobnych obiektów do zestawu elementów prezentowanych za pomocą metod uczenia maszynowego, organizowania markerów, identyfikowania wspólnych elementów na różnych obrazach, automatycznej eliminacji defektów, takich jak czerwone oczy.

OpenCV zapewnia ponad 2500 algorytmów, zarówno klasyczne, jak i odzwierciedlające najnowsze osiągnięcia w dziedzinie wizji komputerowej i systemów uczenia maszynowego. Kod biblioteki jest napisany w C ++ i rozpowszechniany na licencji BSD.

O nowej wersji OpenCV 4.2

Teraz biblioteka jest w wersji OpenCV 4.2, w którym w module DNN (Głęboka sieć neuronowa) z implementacją algorytmów uczenia maszynowego w oparciu o sieci neuronowe, dodał backend do korzystania z CUDA oraz eksperymentalne wsparcie dla nGraph OpenVINO API.

Oprócz korzystania z instrukcji SIMD optymalizujemy wydajność kodu dla wyjścia stereo (StereoBM / StereoSGBM), zmieniamy rozmiar, maskujemy, obracamy, obliczamy brakujące składniki koloru i wiele innych operacji.

W module G-API (opencv_gapi), który działa jako silnik do przetwarzania wydajne obrazowanie z wykorzystaniem algorytmów graficznych, obsługuje bardziej złożone algorytmy hybrydowe dla wizji komputerowej i głębokiego uczenia maszynowego. Zapewnia obsługę mechanizmu wnioskowania Intel. Dodano obsługę przetwarzania strumienia wideo do modelu wykonania.

Naprawiono również luki (CVE-2019-5063, CVE-2019-5064), które mogły prowadzić do wykonania kodu ataku poprzez przetwarzanie niezweryfikowanych danych w formatach XML, YAML i JSON. Jeśli podczas analizy JSON zostanie znaleziony znak z pustym znacznikiem, cała wartość jest kopiowana do bufora, ale bez odpowiedniej weryfikacji limitów przydzielonego obszaru pamięci.

Z innych zmian prezentowane w nowej wersji:

  • Dodano wielowątkową implementację funkcji pyrDown.
  • Dodano możliwość wyodrębniania strumieni wideo z kontenerów multimediów (demuxingu) przy użyciu zaplecza wideo opartego na FFmpeg.
  • Dodano algorytm szybkiej selektywnej rekonstrukcji częstotliwości uszkodzonych obrazów FSR (Frequency Selective Reconstruction).
  • Dodano metodę RIC do interpolacji typowych pustych obszarów.
  • Dodano metodę normalizacji odchylenia LOGOS.

Jak zainstalować OpenCV 4.2?

Dla zainteresowanych możliwością zainstalowania tej biblioteki, może pobrać nową wersję a także zapoznać się z informacjami związanymi z użytkowaniem, a nawet znaleźć samouczki z jego oficjalnej strony internetowej.

Link jest taki.

W tym artykule Podamy kroki, aby móc zaimplementować bibliotekę na Raspberry pi.

Aby zainstalować OpenCV na Raspberry P.Muszę mieć twój system, którym jest Raspbian.

Od wersji vOtworzymy terminal iw nim będziemy pisać następujące polecenia, aby zainstalować zależności, narzędzia programistyczne, pakiety obrazów i inne dodatkowe biblioteki:

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

Wreszcie, Zainstalujmy pliki nagłówkowe Python 3 abyśmy mogli skompilować OpenCV:

sudo apt-get install python3-dev

Teraz stwórzmy środowisko Pythona za pomocą następujących poleceń, aby mieć izolowaną witrynę:

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

Zamierzamy zainstalować virtualenv i 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]"

Zrobiłem to teraz zamierzamy skompilować openCV z:

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

Teraz zamierzamy zwiększyć swap w naszym systemie, ponieważ jeśli zostawimy go tak, jak jest domyślnie, system może się zawiesić:

sudo nano /etc/dphys-swapfile

Zamierzamy edytować zmienną CONF_SWAPSIZE:

CONF_SWAPSIZE=1024

Zapisujemy i zamykamy za pomocą ctrl + o i ctrl + x. Następnie wpisujemy:

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

Teraz przystąpimy do kompilacji:

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

I gotowy.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.