OpenCV är ett gratis bibliotek med maskinvision över plattformen (befintliga versioner för GNU / Linux, Mac OS X, Windows och Android) som ursprungligen var utvecklat av Intel och används i otaliga applikationer, från säkerhetssystem med rörelsedetektering, till processkontrollapplikationer där objektigenkänning krävs. Detta beror på att dess publicering ges under BSD-licensen, vilket gör att den kan användas fritt för kommersiella och forskningsändamål med de villkor som uttrycks i den.
Öppna CV innehåller mer än 500 funktioner som täcker ett brett spektrum av områden i synprocessen, som objektigenkänning (ansiktsigenkänning), kamerakalibrering, stereosyn, robotvision, klassificering av åtgärder i video, konvertering av bilder, extrahering av 3D-modeller, skapande av 3D-utrymme från en stereokamerabild som skapar bilder av hög kvalitet genom att kombinera bilder låg kvalitet.
Tambien erbjuder möjligheten att söka efter bilder av liknande objekt till den uppsättning element som presenteras genom att använda maskininlärningsmetoder, organisera markörer, identifiera vanliga element i olika bilder och automatiskt eliminera defekter som röda ögon.
OpenCV tillhandahåller mer än 2500 algoritmer, både klassiska och reflekterande över de senaste prestationerna inom datorsyn och maskininlärningssystem. Bibliotekskoden är skriven i C ++ och distribueras under BSD-licensen.
Om den nya versionen OpenCV 4.2
Nu biblioteket finns i sin OpenCV 4.2-version, i vilken i DNN-modulen (Djupt neurala nätverk) med implementering av algoritmer för maskininlärning baserat på neurala nätverk, lade till en backend för att använda CUDA och experimentellt stöd för nGraph OpenVINO API implementerades.
Förutom att använda SIMD-instruktioner optimerar vi kodprestanda för stereoutgång (StereoBM / StereoSGBM), ändrar storlek, maskerar, roterar, beräknar saknade färgkomponenter och många andra operationer.
I G-API-modulen (opencv_gapi), som fungerar som en motor för bearbetning effektiv bildåtergivning med grafikbaserade algoritmer, stöder mer komplexa hybridalgoritmer för datorsyn och djup maskininlärning. Ger stöd för Intel Inference Engine. Stöd för videoströmbearbetning lades till exekveringsmodellen.
Sårbarheter (CVE-2019-5063, CVE-2019-5064) som kan leda till körning av attackkod genom att bearbeta icke-verifierade data i XML-, YAML- och JSON-format fixades också. Om ett tecken med en nollkod hittas under JSON-parsning kopieras hela värdet till bufferten, men utan korrekt verifiering av gränserna för det tilldelade minnesområdet.
Av de andra förändringarna presenteras i den här nya versionen:
- Lade till flertrådad implementering av pyrDown-funktionen.
- Lagt till möjligheten att extrahera videoströmmar från mediebehållare (demuxing) med hjälp av den FFmpeg-baserade videobakgrunden.
- Lade till en algoritm för snabb frekvensselektiv rekonstruktion av skadade FSR-bilder (Frequency Selective Reconstruction).
- Lade till RIC-metod för interpolering av typiska tomma områden.
- Lagt till LOGOS-avvikelsens normaliseringsmetod.
Hur installerar jag OpenCV 4.2?
För de som är intresserade av att kunna installera detta bibliotek, kan få den nya versionen samt läsa informationen om användningen och till och med hitta handledning från dess officiella webbplats.
I den här artikeln Vi kommer att tillhandahålla stegen för att kunna implementera biblioteket på en Raspberry pi.
För att installera OpenCV på en Raspberry PJag måste ha ditt system, som är Raspbian.
Från vVi ska öppna en terminal och i den ska vi skriva följande kommandon för att installera beroenden, utvecklarverktyg, bildpaket bland andra extra bibliotek:
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
Slutligen, låt oss installera python 3-rubrikfilerna så att vi kan sammanställa OpenCV:
sudo apt-get install python3-dev
Nu låt oss skapa en Python-miljö med följande kommandon, detta för att ha en isolerad plats:
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo python3 get-pip.py
sudo rm -rf ~/.cache/pip
Vi ska installera virtualenv och 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]"
Gjort detta nu vi ska sammanställa openCV med:
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 ska vi öka bytet i vårt system eftersom om vi lämnar det som det är som standard kan systemet hänga:
sudo nano /etc/dphys-swapfile
Och vi kommer att redigera variabeln CONF_SWAPSIZE:
CONF_SWAPSIZE=1024
Vi sparar och stänger med ctrl + o och ctrl + x. Sedan skriver vi:
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
Nu fortsätter vi att sammanställa:
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
Och redo.