opencv Tutorial
Erste Schritte mit opencv
Suche…
Bemerkungen
In diesem Abschnitt erhalten Sie einen Überblick darüber, was opencv ist und warum ein Entwickler es möglicherweise verwenden möchte.
Es sollte auch alle großen Themen in opencv erwähnen und auf die verwandten Themen verweisen. Da die Dokumentation für opencv neu ist, müssen Sie möglicherweise erste Versionen dieser verwandten Themen erstellen.
Versionen
OpenCV 3
Ausführung | Veröffentlichungsdatum |
---|---|
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 alpha | 2014-08-21 |
OpenCV 2
Ausführung | Veröffentlichungsdatum |
---|---|
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 |
Laden und Anzeigen eines Bildes mit OpenCV
In diesem Beispiel wird gezeigt, wie ein Farbbild von der Festplatte geladen und mit den integrierten Funktionen von OpenCV angezeigt wird. Wir können dazu die Bindungen C / C ++, Python oder Java verwenden.
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 hat keine Namensfenster oder Imshow-Entsprechungen in OpenCV Java. Verwenden Sie zum Anzeigen des Bildes die Option sw oder swt.
Erstellen und installieren Sie OpenCV aus dem Quellcode
Dies ist eine schrittweise Anleitung zum Installieren von OpenCV 3 auf einem Debian-basierten Linux-System vom Quellcode aus. Die Schritte sollten für andere Distributionen gleich bleiben. Ersetzen Sie beim Installieren von Paketen für den Build die entsprechenden Befehle des Paketmanagers.
Hinweis: Wenn Sie keine Zeit mit dem Erstellen von Daten verschwenden oder das Terminal nicht mögen, können Sie OpenCV höchstwahrscheinlich über die GUI des Synaptic Package Manager installieren. Diese Bibliotheken sind jedoch oft veraltet.
Bereiten Sie sich auf den Build vor
Geben Sie in Ihrem Terminal die folgenden Befehle ein, um die erforderlichen Pakete zu installieren:
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
Die folgenden Pakete sind optional:
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev \
libpng-devlibtiff-dev libjasper-dev libdc1394-22-dev
Geben Sie den folgenden Befehl ein, um den OpenCV-Quellcode abzurufen und den Build vorzubereiten:
mkdir ~/src
cd ~/src
git clone https://github.com/opencv/opencv.git
cd opencv
mkdir build && cd build
Bau und Installation
Wir fügen die Beispiele in den Build ein, können sie aber gerne weglassen. Sie können auch andere Flags setzen und Ihren Build nach Ihren Wünschen anpassen.
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=ON ..
Wenn CMake keine Fehler oder fehlende Bibliotheken gemeldet hat, fahren Sie mit dem Build fort.
make -j$(nproc)
Wenn keine Fehler erzeugt wurden, können Sie OpenCV auf dem System installieren:
sudo make install
Nun sollte OpenCV für Ihr System verfügbar sein. Sie können die folgenden Zeilen verwenden, um zu wissen, wo OpenCV installiert wurde und welche Bibliotheken installiert wurden:
pkg-config --cflags opencv # get the include path (-I)
pkg-config --libs opencv # get the libraries path (-L) and the libraries (-l)
Installation testen
Wir bauen zuerst die C ++ - Beispiele:
cd ~/src/opencv/samples
cmake .
make
Wenn keine Fehler erzeugt wurden, führen Sie eine beliebige Probe aus, z
./cpp/cpp-example-edge
Wenn das Beispiel ausgeführt wird, werden die C ++ - Bibliotheken ordnungsgemäß installiert.
Testen Sie als Nächstes die Python-Bindungen:
python
>> import cv2
>> print cv2.__version__
Wenn diese Befehle OpenCV importieren und die korrekte Version drucken, ohne sich zu beschweren, werden die Python-Bindungen ordnungsgemäß installiert.
Glückwunsch, Sie haben gerade OpenCV gebaut und installiert. Viel Spaß beim Programmieren!
Für Mac siehe OpenCV-Installation unter Mac OS X
Hallo Weltbeispiel in Java
OpenCv-Bild aus Dateisystem in Java gelesen
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());
}
}
Holen Sie sich ein Bild von der Webcam
Live-Videofeed von einer Webcam mit der VideoCapture-Klasse von OpenCV mit Java, C / C ++ und Python anzeigen.
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()
Erste Schritte mit OpenCV 3.1 unter Windows
Wir installieren OpenCV 3.1.0 unter Windows und legen los. Es gibt zwei Möglichkeiten, OpenCV unter Windows zu installieren. Laden Sie das Installationsprogramm herunter und führen Sie es aus. Anderes ist aus Quelle zu bauen.
Dies ist der einfachste Weg, OpenCV zu installieren und loszulegen. OpenCV gibt Pre-Build - Binärdateien auf Windows installieren hier . Wenn der Download abgeschlossen ist, extrahieren Sie ihn und installieren Sie ihn unter dem ausgewählten Pfad.
ProTip: Stellen Sie sicher, dass Ihr OpenCV-Pfad keine Leerzeichen enthält. Es ist also besser, wenn Sie es einfach im Verzeichnis C: \ oder D: \ root installieren
Das Problem bei der obigen Methode ist, dass Sie die opencv_contrib-Module nicht verwenden können. Außerdem enthält es nicht alle Tools und Bibliotheken von Drittanbietern. Wenn Sie also alle verwenden möchten, folgen Sie einfach diesen Anweisungen.
Ich werde das kleinste Minimum für die Installation von OpenCV von der Quelle erklären. Weitere Informationen finden Sie hier .
- Installieren Sie CMake .
- Klonen Sie die OpenCV-Quelle von https://github.com/Itseez/opencv.git in einem Verzeichnis, das keine Leerzeichen enthält. Wir nennen es "OpenCVdir".
- Öffnen Sie nun die CMake-GUI, fügen Sie Ihr Quellverzeichnis (OpenCVdir) zum Menü Sources hinzu und erstellen Sie das Verzeichnis zum Build-Menü. Tipp: Wenn kein Build-Verzeichnis vorhanden ist, erstellen Sie ein Verzeichnis in Ihrem opencv-Ordner.
- Klicken Sie auf Konfigurieren und wählen Sie Ihre Visual Studio-Compiler-Version aus. Ich hatte Visual Studio 2013 Professional 32-Bit, also entschied ich mich für den Visual Studio 12-Compiler.
Tipp: Sie können Visual Studio 2013 Professional hier herunterladen. Sie erhalten eine 30-tägige Testversion + 90 Tage lang nach der Anmeldung.
- Klicken Sie auf Fertig stellen, und CMake lädt alle Pakete automatisch. Sie können Pakete hinzufügen oder entfernen. Drücken Sie erneut auf Konfigurieren.
- Wenn Sie mit zusätzlichen opencv_contrib-Modulen erstellen möchten, müssen Sie sie hier herunterladen. Extrahieren Sie sie und fügen Sie dem CMake das Verzeichnis opencv_contrib / modules hinzu (siehe unten).
- Drücken Sie jetzt erneut auf Konfigurieren und anschließend auf Generieren.
- Schließen Sie CMake. Wechseln Sie zu Ihrem_opencv \ build-Ordner und öffnen Sie die Datei mit dem Namen 'OpenCV.sln'. - Es wird Visual Studio geöffnet. Führen Sie es jetzt in beiden Debuggen aus Modus und Release Modus.
- Wählen Sie im Projektmappen-Explorer rechts oben in Visual Studio Projekt installieren und erstellen Sie es.
Hurra!! Viel Spaß mit Ihrer OpenCV.
Hinzufügen des OpenCV-Include-Verzeichnisses zur PATH-Variablen der Umgebungsvariablen:
Gehen Sie zu den Systemeigenschaften und klicken Sie auf Erweiterte Systemeinstellungen.
Klicken Sie nun auf Umgebungsvariablen >> Pfad >> Bearbeiten.
Fügen Sie hier den bin-Ordner in Ihrer OpenCVdir / build / install / x86 / vc ** / bin dieser Variable hinzu. Achten Sie darauf, die vorhandenen Pfadwerte nicht zu ersetzen.
Danach müssen Sie Ihr System neu starten, damit sich die Umgebungsvariablen ändern können. Jetzt können Sie loslegen.
Was und warum OPENCV?
OpenCV (Open Source Computer Vision Library) ist eine Open Source-Bibliothek für Computer Vision und Machine Learning. Es wurde für verschiedene Zwecke wie maschinelles Lernen, Computer Vision, Algorithmus, mathematische Operationen, Videoerfassung, Bildverarbeitung usw. entwickelt. Im Laufe der Jahre ist es bei Forschern und Entwicklern sehr beliebt, da es auf verschiedenen Plattformen (Windows, Linux) unterstützt wird android ios). Es hat auch Wrapper in verschiedenen bekannten Programmiersprachen. Im Rahmen der Lizenzvereinbarung können Unternehmen den Code nutzen und ändern.
Die Bibliothek enthält mehr als 2500 optimierte Algorithmen, die eine hervorragende Genauigkeit in Bezug auf Leistung und Geschwindigkeit bieten. Diese Algorithmen können verwendet werden, um Gesichter zu erkennen und zu erkennen, Objekte zu identifizieren, menschliche Aktionen in Videos zu klassifizieren, Kamerabewegungen zu verfolgen, sich bewegende Objekte zu verfolgen, 3D-Modelle von Objekten zu extrahieren, aus Stereokameras 3D-Punktwolken zu erzeugen und Bilder zusammenzufügen, um eine hohe Auflösung zu erzielen Bild einer ganzen Szene, ähnliche Bilder aus einer Bilddatenbank finden, rote Augen von Bildern entfernen, die mit Blitz aufgenommen wurden, Augenbewegungen folgen, Szenerie erkennen und Markierungen festlegen, um sie mit Augmented Reality zu überlagern usw. OpenCV hat als Benutzer großartige Menschen und eine große Gemeinschaft Die Zahl der Entwickler und Forscher liegt bei über 47.000, und die Anzahl der Downloads liegt bei über 7 Millionen. Die Bibliothek ist umfangreich in professionellen Unternehmen, Forschungsgruppen und anderen Gruppen tätig.
Viele etablierte Unternehmen wie Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda und Toyota, die die Bibliothek beschäftigen, gibt es viele Startups wie Applied Minds, VideoSurf und Zeitera, die OpenCV umfassend einsetzen. Die eingesetzten Einsatzbereiche von OpenCV reichen vom Zusammenfügen von Streetview-Bildern über das Auffinden von Eindringlingen in Überwachungsvideos in Israel, die Überwachung von Minenausrüstung in China, die Unterstützung von Robotern beim Navigieren und Aufnehmen von Objekten in der Willow Garage, das Erkennen von Unfällen durch Schwimmbäder in Europa sowie das Ausführen interaktiver Kunst in Spanien und New York, die Landebahnen auf Trümmer in der Türkei untersuchen, Etiketten auf Produkten in Fabriken auf der ganzen Welt bis hin zu einer schnellen Gesichtserkennung in Japan überprüfen. Es verfügt über C ++ -, C-, Python-, Java- und MATLAB-Schnittstellen und unterstützt Windows, Linux, Android und Mac OS. OpenCV orientiert sich hauptsächlich an Echtzeit-Vision-Anwendungen und nutzt die MMX- und SSE-Anweisungen, sofern verfügbar. Eine voll funktionsfähige CUDA- und OpenCL-Schnittstelle wird derzeit aktiv entwickelt. Es gibt über 500 Algorithmen und etwa zehnmal so viele Funktionen, die diese Algorithmen bilden oder unterstützen. OpenCV wurde in C ++ geschrieben und verfügt über eine Schnittstelle mit Vorlagen, die nahtlos mit STL-Containern funktioniert.
Auf der offiziellen Website gesammelte Informationen