opencvAan de slag met opencv


Opmerkingen

Deze sectie geeft een overzicht van wat opencv is en waarom een ontwikkelaar het misschien wil gebruiken.

Het moet ook alle grote onderwerpen binnen opencv vermelden en een link naar de gerelateerde onderwerpen bevatten. Aangezien de documentatie voor opencv nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

versies

OpenCV 3

Versie Publicatiedatum
3.2 2016/12/23
3.1 2015/12/18
3.0 2015/06/03
3.0 RC1 2015/04/23
3.0 beta 2014/11/07
3.0 alfa 2014/08/21

OpenCV 2

Versie Publicatiedatum
2.4.13 2016/05/19
2.4.12 2015/07/30
2.4.11 2015/02/25
2.4.10 2014/10/01
2.4.9 2014/04/14
2.3.1 2011-08-17
2.3.0 2011-07-04
2.2.0 2010-12-05
2.1.0 2010-04-06
2.0.0 2009-10-01
1.0.0 2006-10-19

Bouw en installeer OpenCV vanuit de bron

Dit is een stapsgewijze handleiding voor het installeren van OpenCV 3 op een Debian-gebaseerd Linux-systeem vanaf de bron. De stappen moeten hetzelfde blijven voor andere distro's, vervang gewoon de relevante pakketbeheeropdrachten bij het installeren van pakketten voor de build.

Opmerking: Als u geen tijd wilt verspillen met het bouwen van dingen of niet van de terminal houdt, kunt u hoogstwaarschijnlijk OpenCV installeren vanuit de GUapt van de Synaptic-pakketbeheerder. Deze bibliotheken zijn echter vaak verouderd.

Bereid je voor op de build

Voer de volgende opdrachten in uw terminal uit om de vereiste pakketten te installeren:

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config \
                     libavcodec-dev libavformat-dev libswscale-dev
 

De volgende pakketten zijn optioneel:

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev \
                     libpng-devlibtiff-dev libjasper-dev libdc1394-22-dev
 

Voer de volgende opdracht uit om de OpenCV-broncode op te halen en de build voor te bereiden:

mkdir ~/src
cd ~/src
git clone https://github.com/opencv/opencv.git
cd opencv
mkdir build && cd build
 

Bouw en installeer

We nemen de voorbeelden op in de build, maar voel je vrij om ze weg te laten. Voel je ook vrij om andere vlaggen in te stellen en je build naar wens aan te passen.

cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D INSTALL_C_EXAMPLES=ON ..
 

Als CMake geen fouten of ontbrekende bibliotheken heeft gemeld, gaat u verder met de build.

make -j$(nproc)
 

Als er geen fouten zijn geproduceerd, kunnen we doorgaan met het installeren van OpenCV op het systeem:

sudo make install
 

Nu zou OpenCV beschikbaar moeten zijn voor uw systeem. U kunt de volgende regels gebruiken om te weten waar OpenCV is geïnstalleerd en welke bibliotheken zijn geïnstalleerd:

pkg-config --cflags opencv  # get the include path (-I)
pkg-config --libs opencv    # get the libraries path (-L) and the libraries (-l)
 

Test installatie

We bouwen eerst de C ++ -voorbeelden:

cd ~/src/opencv/samples
cmake .
make
 

Als er geen fouten zijn gemaakt, voert u een willekeurig voorbeeld uit, bijv

./cpp/cpp-example-edge
 

Als het voorbeeld wordt uitgevoerd, zijn de C ++ - bibliotheken correct geïnstalleerd.

Test vervolgens de Python-bindingen:

python
>> import cv2
>> print cv2.__version__
 

Als deze opdrachten OpenCV importeren en de juiste versie afdrukken zonder te klagen, zijn de Python-bindingen correct geïnstalleerd.

Gefeliciteerd, je hebt zojuist OpenCV gebouwd en geïnstalleerd. Veel plezier met programmeren!

Voor Mac zie hier OpenCV-installatie op Mac OS X

Krijg beeld van webcam

Geef een live videofeed weer die afkomstig is van een webcam met behulp van de VideoCapture-klasse van OpenCV met Java, C / C ++ en Python.

Java

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.videoio.VideoCapture;
 
public class Camera {
    public static void main(String[] args) {
        // Load Native Library
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        // image container object
        Mat imageArray = new Mat();
        // Video device acces
        VideoCapture videoDevice = new VideoCapture();
        // 0:Start default video device 1,2 etc video device id
        videoDevice.open(0);
        // is contected
        if (videoDevice.isOpened()) {
        // Get frame from camera
            videoDevice.read(imageArray);
            // image array
            System.out.println(imageArray.toString());
            // Release video device
            videoDevice.release();
        } else {
            System.out.println("Error.");
        }
    }
}
 

C ++

#include "opencv2/opencv.hpp"
#include "iostream"

int main(int, char**) {
    // open the first webcam plugged in the computer
    cv::VideoCapture camera(0);
    if (!camera.isOpened()) {
        std::cerr << "ERROR: Could not open camera" << std::endl;
        return 1;
    }

    // create a window to display the images from the webcam
    cv::namedWindow("Webcam", CV_WINDOW_AUTOSIZE);

    // this will contain the image from the webcam
    cv::Mat frame;
        
    // capture the next frame from the webcam
    camera >> frame;
    
    // display the frame until you press a key
    while (1) {
        // show the image on the window
        cv::imshow("Webcam", frame);
        // wait (10ms) for a key to be pressed
        if (cv::waitKey(10) >= 0)
            break;
    }
    return 0;
}
 

Python

import numpy as np
import cv2

# Video source - can be camera index number given by 'ls /dev/video*
# or can be a video file, e.g. '~/Video.avi'
cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
 

Aan de slag met OpenCV 3.1 op Windows

We installeren OpenCV 3.1.0 op Windows en gaan aan de slag. Er zijn twee manieren om OpenCV op Windows te installeren. Een daarvan is om het installatieprogramma te downloaden en uit te voeren. Andere is om te bouwen vanuit de bron.

Dit is de eenvoudigste manier om OpenCV te installeren en aan de slag te gaan. OpenCV biedt pre-build binaries om hier op Windows te installeren. Nadat het downloaden is voltooid, pak je het uit en installeer je het volgens het gekozen pad.

ProTip: zorg ervoor dat uw OpenCV-pad geen spaties bevat. Het is dus beter als u het gewoon installeert in C: \ of D: \ root directory

Het probleem met de bovenstaande methode is dat u de opencv_contrib-modules niet kunt gebruiken. Het komt ook niet met alle tools en bibliotheken van derden. Dus als je al deze wilt gebruiken, volg je gewoon.

Ik zal het minste minimum uitleggen om OpenCV vanaf de bron te installeren. Raadpleeg hier voor meer geavanceerde opties.

  • CMake installeren.
  • Kloon de OpenCV-bron van https://github.com/Itseez/opencv.git in een map zonder spaties. Laten we ernaar verwijzen als "OpenCVdir". voer hier de afbeeldingsbeschrijving in
  • Open nu CMake GUI en voeg uw bronmap (OpenCVdir) toe aan het menu Bronnen en bouw de map aan het build-menu. Tip: Als er geen build-map is, maakt u er een aan in uw opencv-map. voer hier de afbeeldingsbeschrijving in
  • Klik op Configureren en selecteer uw Visual Studio-compilerversie. Ik had Visual Studio 2013 Professional 32-bit, dus ik koos voor Visual Studio 12 compiler. voer hier de afbeeldingsbeschrijving in

Tip: u kunt Visual Studio 2013 Professional vanaf hier downloaden. Het wordt geleverd met 30 dagen op proef + 90 dagen verlengde route na het inloggen.

  • Druk op Voltooien en CMake laadt alle pakketten automatisch. U kunt pakketten toevoegen of verwijderen. Druk nogmaals op Configureren.
  • Als u wilt bouwen met extra opencv_contrib modules, moet u deze downloaden vanaf hier . Pak ze vervolgens uit en voeg de map opencv_contrib / modules toe aan uw CMake zoals hieronder wordt getoond. voer hier de afbeeldingsbeschrijving in
  • Druk nu opnieuw op Configureren en vervolgens op Genereren.
  • Sluiten CMake. Ga naar uw map 'opencv \ build' en open het bestand met de naam 'OpenCV.sln'. - Het opent Visual Studio. Voer het nu in beide foutopsporing uit voer hier de afbeeldingsbeschrijving in modus en laat los voer hier de afbeeldingsbeschrijving in modus.
  • Selecteer nu in de oplossingsverkenner rechtsboven in Visual Studio het project INSTALLEREN en bouw het. voer hier de afbeeldingsbeschrijving in

Hoera!! Geniet van uw OpenCV.

Toevoegen van OpenCV include directory aan de PATH-variabele van de omgevingsvariabelen:

  • Ga naar Systeemeigenschappen en klik op Geavanceerde systeeminstellingen. voer hier de afbeeldingsbeschrijving in

  • Klik nu op omgevingsvariabelen >> pad >> bewerken. voer hier de afbeeldingsbeschrijving in

  • Voeg hier de bin-map in uw OpenCVdir / build / install / x86 / vc ** / bin toe aan deze variabele. Zorg ervoor dat u de bestaande padwaarden niet vervangt.

  • Hierna moet u uw systeem opnieuw opstarten om de omgevingsvariabelen te veranderen en nu bent u klaar om te beginnen.

Hallo wereldvoorbeeld in Java

OpenCv-afbeelding gelezen van bestandssysteem in Java

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
 
public class Giris {    
    public static void main(String[] args) {
        //Load native library
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        //image container object
        Mat imageArray;
        //Read image from file system
        imageArray=Imgcodecs.imread("C:\\Users\\mesutpiskin\\sample.jpg");
        //Get image with & height
        System.out.println(imageArray.rows());
        System.out.println(imageArray.cols());
    }
}
 

Laad en toon een afbeelding met OpenCV

In dit voorbeeld zullen we zien hoe een kleurenafbeelding van schijf te laden en weer te geven met behulp van de ingebouwde functies van OpenCV. We kunnen de C / C ++, Python of Java-bindingen gebruiken om dit te bereiken.

In C ++:

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>

#include <iostream>

using namespace cv;

int main(int argc, char** argv) {
    // We'll start by loading an image from the drive
    Mat image = imread("image.jpg", CV_LOAD_IMAGE_COLOR);

    // We check that our image has been correctly loaded
    if(image.empty()) {
        std::cout << "Error: the image has been incorrectly loaded." << std::endl;
        return 0;
    }

    // Then we create a window to display our image
    namedWindow("My first OpenCV window");

    // Finally, we display our image and ask the program to wait for a key to be pressed
    imshow("My first OpenCV window", image);
    waitKey(0);

    return 0;
}
 

In Python:

import sys
import cv2

# We load the image from disk
img = cv2.imread("image.jpg", cv2.CV_LOAD_IMAGE_COLOR)

# We check that our image has been correctly loaded
if img.size == 0
    sys.exit("Error: the image has not been correctly loaded.")

# We create a window to display our image
cv2.namedwindow("My first OpenCV window")

# We display our image and ask the program to wait until a key is pressed
cv2.imshow("My first OpenCV window", img)
cv2.waitKey(0)

# We close the window
cv2.destroyAllWindows()
 

In Java:

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.CvType;
import org.opencv.highgui.Highgui;
public class Sample{
public static void main (String[] args) {

    //Load native opencv library
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    //Read image from file first param:file location ,second param:color space
    Mat img = imread("image.jpg",CV_LOAD_IMAGE_COLOR);

    //If the image is successfully read.
    if (img.size() == 0) {
        System.exit(1);
    }
}
 

HighGui heeft geen naamvensters of laat equivalenten zien in opencv java. Gebruik swing of swt om de afbeelding weer te geven.

Wat en waarom OPENCV?

OpenCV (Open Source Computer Vision Library) is een open source computer vision- en machine learning-softwarebibliotheek. Het werd gebouwd voor verschillende doeleinden, zoals machine learning, computer vision, algoritme, wiskundige bewerkingen, video-opname, beeldverwerking enz. Door de jaren heen is het erg populair geworden bij de onderzoekers en ontwikkelaars vanwege zijn ondersteuning in verschillende platforms (Windows, Linux , Android, iOS). Ook heeft het wrapper in verschillende gerenommeerde programmeertalen. Onder de licentieovereenkomst heeft het toegang voor bedrijven om de code te gebruiken en te wijzigen.

De bibliotheek bevat meer dan 2500 geoptimaliseerde algoritmen, die een uitstekende nauwkeurigheid in prestaties en snelheid hebben. Deze algoritmen kunnen worden gebruikt om gezichten te detecteren en te herkennen, objecten te identificeren, menselijke acties in video's te classificeren, camerabewegingen te volgen, bewegende objecten te volgen, 3D-modellen van objecten te extraheren, 3D-puntenwolken van stereocamera's te produceren, afbeeldingen aan elkaar te naaien om een hoge resolutie te produceren afbeelding van een hele scène, vind vergelijkbare afbeeldingen in een afbeeldingendatabase, verwijder rode ogen uit afbeeldingen die met flits zijn genomen, volg oogbewegingen, herken landschappen en stel markeringen in om deze te bedekken met augmented reality, enz. OpenCV heeft geweldige mensen en gemeenschap betrokken als gebruikers , ontwikkelaars en onderzoekers, het aantal is meer dan 47 duizend en het geschatte aantal downloads van meer dan 7 miljoen. De bibliotheek is uitgebreid in professionele bedrijven, onderzoeksgroepen en andere groepen.

Veel gerenommeerde bedrijven zoals Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota die de bibliotheek in dienst hebben, er zijn veel startups zoals Applied Minds, VideoSurf en Zeitera, die uitgebreid gebruik maken van OpenCV. Het ingezette gebruik van OpenCV omvat het bereik van het aan elkaar plakken van streetview-afbeeldingen, het detecteren van indringers in bewakingsvideo in Israël, het bewaken van mijnapparatuur in China, het helpen van robots bij het navigeren en het oppakken van objecten bij Willow Garage, detectie van ongevallen met verdrinking van het zwembad in Europa, het uitvoeren van interactieve kunst in Spanje en New York, controleren banen op puin in Turkije, inspecteren labels op producten in fabrieken over de hele wereld op snelle gezichtsdetectie in Japan. Het heeft C ++, C, Python, Java en MATLAB-interfaces en ondersteunt Windows, Linux, Android en Mac OS. OpenCV neigt vooral naar realtime vision-toepassingen en profiteert van MMX- en SSE-instructies indien beschikbaar. Een volledig functionele CUDA- en OpenCL-interface worden momenteel actief ontwikkeld. Er zijn meer dan 500 algoritmen en ongeveer 10 keer zoveel functies die deze algoritmen samenstellen of ondersteunen. OpenCV is native geschreven in C ++ en heeft een sjablooninterface die naadloos werkt met STL-containers.

Informatie verzameld via de officiële website