Abstrakt
- 3530
- 1127
- Matteo Möllinger
In diesem Artikel verwendete Konventionen:
- $ - Ausführung in der Befehlszeile durch einen nicht privilegierten Benutzer
- # - Ausführung in der Befehlszeile durch einen Superuser
- Der tatsächliche Befehl, der in der Befehlszeile oder des zu kompilierten Programms ausgeführt werden soll
- AUSGANG: Ausgabe in der Befehlszeile durch Befehlsausführung erstellt
- NOTIZ: Allgemeine Notizen und zusätzliche Informationen
Einführung
In einfachen Worten ist eine Computer Vision ein wissenschaftliches Feld, das versucht, der Maschine einen Anblick zu geben. Dieses wissenschaftliche Gebiet ist in den letzten Jahren rasant zugenommen. Unter den Forschern ist dieses Wachstum auf viele Verbesserungen der Visionalgorithmen und unter den Computer Vision -Hobbyisten zurückzuführen. Dies ist auf die billigeren Hardwarekomponenten und die Verarbeitungsleistung zurückzuführen. Die OpenCV -Bibliothek spielt eine großartige Rolle im Bereich Computer Vision, da sie erheblich hilft, die Kosten- und Vorbereitungszeit des Forschungsumfelds der Computer Vision zu verkürzen, das von Studenten, Hobbyisten und Fachleuten benötigt wird. OpenCV bietet auch eine einfache Verwendung von Funktionen, um die Arbeit auf einfache, effektive und elegante Weise zu erledigen. OpenCV wurde von Intel gestartet und später in ein Open -Source -Projekt umgewandelt, das jetzt auf SourceForge verfügbar ist.Netz. Die OpenCV-Bibliothek verfügt. Trotz der Tatsache, dass diese Bibliothek auf vielen Linux -Verteilungen aus ihren relevanten Paket -Repositories verfügbar ist.NET -Website.
Die Gründe für das Kompilieren eines Quellcodes können enthalten:
- Neue Version 2.0.0 kürzlich veröffentlicht und weitere Funktionen verfügbar
- Einige Fehler wurden behoben, die Linux opencv 1 beeinflussten.0.0 Versionen (z. B. cvgetCaptureProperty () usw. usw. )
- Weitere Unterstützung für OpenCV 2 ist verfügbar.0.0 Version als für frühere 1.0.0 Version
Dieser Artikel beginnt mit der Installation von OpenCV auf Debian 5.0 (Lenny). Später wird ein Leser anhand einer Reihe von Beispielen zur Anzeige von OpenCV geführt.
Installation
Der folgende Abschnitt beschreibt einen Installationsprozess der OpenCV -Bibliothek, indem Binärdateien aus einem von SourceForge verfügbaren Quellcode erstellt werden.Netz. Das hier gezeigte Installationsverfahren wurde auf Debian 5 getestet.0 (Lenny) und Ubuntu 9.10 (Karmic Koala). Das tatsächliche Installationsverfahren sollte für die meisten Linux -Verteilungen von dem ersten Schritt, in dem Paketabhängigkeiten aus relevanten Debian- und Ubuntu -Verteilungsrepositories installiert werden, ähnlich oder genau gleich sein. Auf dem RPM -Linux -System sollten Sie Ihr RPM -Tool (Red Hat Package Management) für Alternativen zu OpenCV -Voraussetzungen konsultieren, die im nächsten Abschnitt beschrieben wurden.
Voraussetzungen
Erstens muss die Installation der erforderlichen Voraussetzungen der OpenCV -Bibliothek erfolgen. Die Liste der Abhängigkeiten kann entsprechend Ihren Anforderungen geringfügig geändert werden:
- libavformat -dev - Entwicklungsdateien für libavFormat Die FFMPEG -Dateiformatbibliothek
- libgtk2.0 -dev - Entwicklungsdateien für die GTK+ Grafische Benutzeroberfläche Bibliothek
- PKG -Konfiguration - Kompilier- und Link -Flags für Bibliotheken verwalten
- libswscale -dev - Entwicklungsdateien für libswscale Die FFMPEG Video Scaling Library
- CMAKE-Ein plattformübergreifender Open-Source-System, das zur Kompilierung des Quellcode verwendet wird
- BZIP2-Hochwertiger Block-Sorting-Dateikompressor, der zum Extrahieren von OpenCV-Quelldatei verwendet wird
Der folgende Linux -Befehl holt automatisch alle erforderlichen Pakete und Abhängigkeiten ab und installiert:
# APT-Get Installieren Sie libavFormat-dev libgtk2.0-dev PKG-Config CMAKE libswscale-dev BZIP2
Erhalten von OpenCV -Quellcode
Die aktuelle Version der OpenCV -Bibliothek zum Zeitpunkt des Schreibens ist eine Version 2.0.0. Sie können einen OpenCV-Quellcode herunterladen, indem Sie Ihren Webbrowser auf OpenCV-Sourceforge verweisen.Netto oder verwenden Sie den Befehl wGet, um einen Quellcode direkt in der Befehlszeile zu erwerben:
$ wget http: // downloads.SourceForge.net/project/opencvlibrary/opencv-unix/2.0/opencv-2.0.0.Teer.BZ2
OpenCV -Quellcode extrahieren
Unabhängig davon, ob Sie Webbrowser oder WGet-Dienstprogramm verwendet haben, um den Quellcode der OpenCV-Bibliothek herunterzuladen, sollten Sie OpenCV-2 enden.0.0.Teer.BZ2 -Tarball in Ihrem aktuellen Arbeitsverzeichnis. Der nächste Schritt besteht darin, Quelldateien mit dem TAR -Befehl zu extrahieren. Der folgende Linux-Befehl extrahiert alle Dateien in OpenCVV-2.0.0 Verzeichnis:
$ tar xvjf opencv-2.0.0.Teer.BZ2
Neue OpenCV-2.0.0 Verzeichnis (ca. ca. 67 MB) sollte jetzt in Ihrem aktuellen Arbeitsverzeichnis verfügbar sein und enthält alle erforderlichen Quelldateien für eine Zusammenstellung.
Zusammenstellung und Installation von OpenCV -Binärdateien
Um den OpenCV-Quellcode zu kompilieren, werden wir eine Open-Source-System-CMake verwenden. Die folgenden CMake -Konfigurationskompilien -Flags werden festgelegt:
- CMAKE_BUILD_TYPE = Release: CMake wird ein Release -Projekt bulidieren
- Cmake_install_prefix =/usr/local: Verzeichnis, das als Installationsziel verwendet werden soll
- Build_python_support: Aktivieren Sie die Unterstützung von Python
NOTIZ: Das CMAKE -Dienstprogramm stand. Wenn Sie OpenCCV von Ihrem System deinstallieren müssen, sollten Sie geeignete Änderungen vornehmen, bevor Sie mit der Zusammenstellung fortfahren.
Navigieren Sie zu OpenCV-2.0.0 Verzeichnis mit einem Quellcode:
$ cd opencv-2.0.0/
Erstellen und navigieren Sie zu einem neuen Verzeichnis, das von CMake verwendet werden kann. In diesem Fall ist der Verzeichnisname gleich wie der Projekttyp "Release":
$ mkdir Veröffentlichung; CD -Veröffentlichung
Verwenden Sie CMake, um Konfigurationsdateien mit oben beschriebenen Konfigurationsflags zu erstellen:
NOTIZ: Cmake_install_prefix flag kann auf jeden gewünschten Installationspfad gesetzt werden
cmake -d cmake_build_type = release -d cmake_install_prefix =/usr/local -d build_python_support = on…
Nach Ausführung des CMAKE -Befehl.
AUSGANG:
- Allgemeine Konfiguration für OpenCV 2.0.0 ========================================
-
- Compiler:
- C ++ Flags (Release): -Wall -pThread -Function -Abschnitte -o3 -dndebug -Fomit -Frame -P -Inter -O3 -FFast -Math -mmmx -dndebug
- C ++ Flags (Debug): -Wall -pThread -Function -Abschnitte -g -o0 -ddebug -d_debug
- Linker Flags (Release):
- Linker Flags (Debugg):
-
- GUI:
- GTK+ 2.x: 1
- GThread: 1
-
- Bild I/O:
- JPEG: Richtig
- PNG: Richtig
- TIFF: Falsch
- Jasper: Falsch
-
- Video i/o:
- DC1394 1.x: 0
- DC1394 2.x: 0
- Ffmpeg: 1
- Codec: 1
- Format: 1
- Util: 1
- Swscale: 1
- Gentoo-Stil: 1
- Gstreamer: 0
- Unicap:
- V4L/V4L2: 1/1
- Xine: 0
-
- Schnittstellen:
- Alter Python: 0
- Python: on
- Verwenden Sie IPP: Nein
- Dokumentation erstellen 0
-
- Installieren Sie Pfad: /usr /local
-
- cvconfig.H ist in:/home/sandbox/opencv-2.0.0/Release
- -
-
- Konfigurieren erledigt
- Erzeugen erzeugt
- Erstellendateien wurden in:/home/sandbox/opencv-2 geschrieben.0.0/Release
Wenn die Ausführung des CMAKE -Befehls keine Fehler ergab, sind wir bereit, einen Quellcode zu kompilieren.:
NOTIZ: Während eines Build -Prozesses werden in Ihrem Terminal eine Reihe von Warnmeldungen angezeigt. Diese Warnmeldungen können ignoriert werden, es sei denn, sie beeinflussen Ihre bevorzugten OpenCV -Umgebungseinstellungen!
$ make
Wenn am Terminal keine Fehler angezeigt wurden und der Fortschrittsdialog [100%] während des Build -Vorgangs erreicht wurde, sind wir bereit, OpenCV -Bibliotheken zu installieren. Die Installation ist optional, solange Ihre Umgebungsvariable ld_library_path mit einem geeigneten OpenCV -Verzeichnis verknüpft ist. Wenn Sie OpenCV in /usr /local installieren möchten, wie von CMAKE -Flags oben festgelegt, führen Sie einen folgenden Linux -Befehl aus:
# Installation machen
Exportieren Sie den richtigen Pfad in die Umgebungsvariable LD_LIBRARY_PATH und verwenden Sie LDConfig, um dynamisch mit einer OpenCV -Bibliothek zu verknüpfen:
$ export ld_library_path =/usr/local/lib/: $ ld_library_path
# ldconfig
Wenn Sie keine OpenCV -Bibliothek installieren möchten, sollten Sie einfach einen korrekten Pfad in das OpenCV -Bibliotheksaufbau -Verzeichnis exportieren, um Ihr System zu informieren, wo sich die Bibliothek befindet. Nehmen wir an, dass sich Ihr neues Veröffentlichungsverzeichnis unter ~/opencv-2 befindet.0.0/Release, dann sieht Ihr Exportpfad wie folgt aus:
$ export ld_library_path = ~/opencv-2.0.0/release/: $ ld_library_path
# ldconfig
Dadurch wird ein Installationsverfahren der OpenCV -Bibliothek abgeschlossen. Weitere Informationen in Bezug auf die OpenCV -Installation finden Sie unter OpenCV -Installationshandbuch.
OpenCV -Beispiele
Ohne eine Diskussion darüber zu verlängern, was Computer Vision ist und wie sie sich mit OpenCV bezieht. Wenn Sie an einer intensiveren Einführung in Computer Vision und OpenCV interessiert sind, empfehle ich ein Buch: „Lernen OpenCV: Computer Vision mit der OpenCV -Bibliothek von Gary Bradski und Adrian Kaehler“.
Eine Bildumwandlung
Beginnen wir mit etwas wirklich Einfachem und das sind 7 Codezeilen, um das Bild zwischen den folgenden Bildtypen zu konvertieren:
- Windows Bitmaps - BMP, DIB
- JPEG -Dateien - JPEG, JPG, JPE
- Tragbare Netzwerkgrafiken - PNG
- Tragbares Bildformat - PBM, PGM, PPM
- Sun Rasters - sr, ras
- TIFF -Dateien - TIFF, TIF
Das folgende Programm akzeptiert zwei Befehlszeilenargumente, Quellbild und Zielbild. Das Quellbild wird als Bildtyp gespeichert, das durch die Ziellage -Bilddateierweiterung angegeben ist. Speichern Sie den folgenden Code in einer Datei namens Image Conversion.C :
#include "HighGui.H"
int main (int argc, char ** argv)
Iplimage* img = cVLoadImage (argv [1]);
CVSAVEIMAGE (Argv [2], IMG);
cvReleaseImage (& img);
return0;
Der Quellcode unseres neuen Programms ist bereit und hier kommt der Kompilierungsteil. Angenommen, Sie haben Ihr erstes OpenCV-Programm als Bildkonversion gespeichert.c Sie können Ihr Programm mit dem folgenden Linux -Befehl kompilieren:
$ g ++ 'pkg-config opencv-cflags-libs' Bildkonversion.c -o Bildkonversion
Nach erfolgreicher Zusammenstellung wird in Ihrem aktuellen Arbeitsverzeichnis eine neue ausführbare binäre Datei mit dem Namen Image Conversion erstellt. Bevor wir dieses neue Programm testen, benötigen wir ein Beispielbild:
$ wget -o Bild.png http: // www.Linuxconfig.org/templates/rhuk_milkyway/bilder/mw_joomla_logo.png
WGet hat ein Bild heruntergeladen und gespeichert.PNG in Ihr aktuelles Verzeichnis, und wir können nun versuchen, dieses Bild in einen beliebigen Bildtyp zu konvertieren, der oben aufgeführt ist. Der folgende Linux -Befehl konvertiert den Bildtyp PNG in JPG. Unter der Annahme, dass die Programmkompilierung keine Fehler erzeugt und Ihre Binärdatei als Bildkonversion gespeichert wird, können Sie zwischen zwei Bildtypen mit dem folgenden Linux-Befehl konvertieren:
$ ./Bildkonversion Bild.PNG Bild.JPG
Um zu bestätigen, dass das Bild konvertiert wurde, kann ein Dateibefehl verwendet werden, um einen Dateityp für eine bestimmte Datei als Argument anzuzeigen:
$ Dateibild.*
AUSGANG:
Bild.JPG: JPEG -Bilddaten, JFIF -Standard 1.01
Bild.PNG: PNG-Bild, 270 x 105, 8-Bit/Farbe RGBA, nicht interliert
Wenn Sie sich den Kompilierungsbefehl noch einmal ansehen, können Sie feststellen, dass ein PKG -Config -Dienstprogramm verwendet wurde. Daher kann ein alternativer Befehl zu dem oben ohne Pkg-Config-Dienstprogramm konstruiert werden, um so etwas auszusehen:
g ++ -i/usr/local/include/opencv -l/usr/local/lib \
-lcxcore -lcv -lhighgui -lcvaux -lml Bildkonversion.c -o Bildkonversion
In beiden Fällen erzeugt der Kompilierungsbefehl jedoch unerwünschte Bibliotheksabhängigkeiten:
$ ldd Image-Conversion | Grep Local
AUSGANG:
libcxcore.So.2.0 =>/usr/local/lib/libcxcore.So.2.0 (0xb7ccc000)
libcv.So.2.0 =>/usr/local/lib/libcv.So.2.0 (0xb7a7a000)
libhighgui.So.2.0 =>/usr/local/lib/libhighgui.So.2.0 (0xb7a3f000)
libcvaux.So.2.0 =>/usr/local/lib/libcvaux.So.2.0 (0xb793b000)
libml.So.2.0 =>/usr/local/lib/libml.So.2.0 (0xb78d8000)
Unser Programm ist abhängig von OpenCVs HighGui.H -Bibliothek und daher ist nicht erforderlich. Eine verkürzte Version des Compilation -Befehls sieht folgendermaßen aus:
$ g ++ -i/usr/local/include/opencv -lhighgui Bildkonversion.c -o Bildkonversion
Folglich war eine Programmbibliotheksabhängigkeit verringert worden:
$ ldd Image-Conversion | Grep Local
AUSGANG:
libhighgui.So.2.0 =>/usr/local/lib/libhighgui.So.2.0 (0xb7f61000)
libcxcore.So.2.0 =>/usr/local/lib/libcxcore.So.2.0 (0xb7a75000)
libcv.So.2.0 =>/usr/local/lib/libcv.So.2.0 (0xb7823000)
Von nun an liegt es an Ihnen, wie Sie die folgenden Beispiele in diesem Artikel kompilieren. Denken Sie daran, dass der erste Kompilierungsbefehl einschließlich PKG-Config in der Lage sein wird, alle Beispiele zu kompilieren. Es kann jedoch eine Binärdauer mit übermäßigen Abhängigkeiten hervorrufen.
Zeigen Sie ein Bild an
Zu diesem Zeitpunkt konnten wir einen Bildtyp konvertieren und seine Meta -Beschreibung nach Dateibefehl bestätigen. Es ist Zeit, ein Bild auf dem Bildschirm anzuzeigen und visuell zu bestätigen, dass es korrekt konvertiert wurde. Das folgende Beispielprogramm zeigt ein Bild auf dem Bildschirm an:
#include "HighGui.H"
int main (int argc, char ** argv)
// cvloadImage bestimmt einen Bildtyp und erstellt eine Datenstruktur mit geeigneter Größe
Iplimage* img = cVLoadImage (argv [1]);
// Erstellen Sie ein Fenster. Der Fenstername wird durch ein angegebenes Argument bestimmt
cvnamedWindow (argv [1], cv_window_autosize);
// Zeigen Sie ein Bild im Inneren und Fenster an. Der Fenstername wird durch ein angegebenes Argument bestimmt
cvshowimage (argv [1], img);
// Warte auf unbestimmte Zeit auf Tastenanschlag
Cvwaitkey (0);
// Zeiger auf ein Objekt loslassen
cvReleaseImage (& img);
// ein Fenster zerstören
cvDestroyWindow (argv [1]);
NOTIZ: Kehren Sie oben zu einem Bildkonvertierungsabschnitt zurück, wenn Sie Hilfe zum Kompilieren dieses OpenCV -Programms benötigen.
Ausführung dieses Display-Image-Programms mit einem Bild.JPG, das im vorhergehenden Abschnitt erzeugt wird, zeigt dieses Bild auf dem Bildschirm an:
$ Display-Image-Bild.JPG
AUSGANG:
Gaußsch glatt
Sie können auch versuchen, eine einfache Bildtransformation mit der Gaußschen glatten Methode zu erstellen. Fügen Sie Ihrem Display-Image-Code eine folgende Zeile vor einem CVShowimage-Funktionsaufruf hinzu:
…
cvnamedWindow (argv [1], cv_window_autosize);
CVSmooth (IMG, IMG, CV_GAUSSIAN, 9, 9);
cvshowimage (argv [1], img);
…
und als erste Zeile zu Ihrem Programm '#include “CV hinzufügen.H ”'Richtlinie.
Dies enthält eine Gaußsche glatte Methode, die auf jedem Pixel mit 9 x 9 Bereich in das Ausgangsbild zentriert ist. Nach Zusammenstellung und Ausführung wird eine folgende Ausgabe vorgestellt:
AUSGANG:
Video abspielen
Dieser Abschnitt enthält einen Programmcode, der einen einfachen Videoplayer mit OpenCV -Bibliothek erstellt. Beispielvideo, Baum.AVI ist in Ihrem OpenCV-2 zu finden.0.0 Verzeichnis, in dem Sie seine Quelldateien extrahiert haben (OpenCV-2.0.0/Proben/C/Baum.avi):
#include "cv.H"
#include "HighGui.H"
// Globale Variablen initialisieren
int g_slider_position = 0; // Trackbar -Position
Cvcapture* g_capture = null; // Struktur zum Erstellen einer Videoeingabe
// Routine aufgerufen werden, wenn der Benutzer einen Trackbar -Schieberegler bewegt
void ontrackbarslide (int pos)
cvsetcaptureProperty (
g_capture,
Cv_cap_prop_pos_frames,
pos
);
int main (int argc, char ** argv)
// Erstellen Sie ein Fenster mit entsprechender Größe. Der Windows -Name wird mit dem Dateinamen bestimmt
// als Argument geliefert
cvnamedWindow (argv [1], cv_window_autosize);
// Video öffnen
g_capture = cvCreateFileCapture (argv [1]);
// Lesen Sie die Position in Frameseinheiten ein und holen Sie die Gesamtzahl der Frames ab
Int Frames = (int) cvgetCaptureProperty (
g_capture,
CV_CAP_PROP_FRAME_COUNT
);
// Erstellen Sie Treackbar nicht, wenn Video keine Informationen enthält
// über die Anzahl der Frames
if (Frames!= 0)
CVCreatetrackbar (
"Position",
Argv [1],
& g_slider_position,
Rahmen,
Ontrackbarsslide
);
// Videokrahmen nach Frame anzeigen
Iplimage* rahmen;
während (1)
Frame = cvQueryFrame (g_capture);
Wenn( !Rahmen) Break;
cvshowimage (argv [1], rahmen);
// Setzen Sie die Trackbar auf eine aktuelle Rahmenposition
CVSETTRACKBARPOS ("Position", Argv [1], g_slider_position);
g_slider_position ++;
char c = cvwaitkey (33);
// aufhören, wenn ESC gedrückt wird
if (c == 27) brechen;
// freier Speicher
cvReleascapture (& g_capture);
cvDestroyWindow (argv [1]);
return (0);
NOTIZ: Kehren Sie oben zu einem Bildkonvertierungsabschnitt zurück, wenn Sie Hilfe zum Kompilieren dieses OpenCV -Programms benötigen.
Führen Sie Ihr neues OpenCV -Programm aus und liefern Sie als Argument eine Videodatei:
$ ./Video-Player ~/opencv-2.0.0/Proben/C/Baum.Avi
AUSGANG:
Eingabe von einer Videokamera
Ziel dieses Abschnitts ist es, einige einfache Tipps zur Konfiguration einer Kamera auf einem Linux -System zu geben und zu bestätigen, dass Ihre Videokamera von Ihrem System korrekt erkannt wird. Wenn Ihre Kamera fertig ist, werden Sie ein einfaches Programm präsentiert, das in der Lage ist, ein Video mit einer Videokamera als Eingabe anzuzeigen.
Für diesen Artikel habe ich einen Logitech, Inc verwendet. QuickCam Pro 9000 Kamera. Installation dieser Kamera auf Debian 5.0 oder Ubuntu 9.10 (Karmic Koala) System war einfacher Plug & Play -Verfahren. Hier sind einige Hinweise darauf, wie Sie bestätigen können, dass Ihre Kamera von Ihrem System erkannt wurde:
NOTIZ: Ihre Ausgabe wird anders sein !
$ lsusb
AUSGANG:
Bus 002 Gerät 003: ID 046d: 0990 Logitech, Inc. QuickCam Pro 9000
Bus 002 Gerät 001: ID 1D6B: 0002 Linux Foundation 2.0 Root Hub
Bus 001 Gerät 002: ID 045E: 00D1 Microsoft Corp. Optische Maus mit Neigung Rad
Bus 001 Gerät 001: ID 1D6B: 0001 Linux Foundation 1.1 Root Hub
Der Befehl LSUSB enthält einen in Ihr System angeschlossenen Kamera -Typ. Die Ausgabe des Befehls von LSUSB ist nicht erforderlich, bedeutet, dass Ihre Kamera jetzt zur Verwendung bereit ist. Mal sehen, ob einige Module mit Video zugeordnet sind:
$ lsmod | Grep Video
AUSGANG:
UVCVideo 45800 0
compat_ioctl32 1312 1 uvcvideo
Videodev 27520 1 UVCVideo
V4L1_COMPAT 12260 2 UVCVIDEO, Videodev
USBCORE 118192 7 SND_USB_AUDIO, SND_USB_LIB, UVCVIDEO, USBHID, EHCI_HCD, OHCI_HCD
Das sieht sehr vielversprechend aus. Meine Kamera verwendet das UVCVideo -Modul. Wenn Sie kein OUPTUT sehen oder nur die Ausgabe nicht mit Ihrem Kameratgerät zu tun haben, müssen Sie möglicherweise Ihren Kernel neu kompilieren oder ein geeignetes Modul installieren.
Jetzt müssen wir eine Gerätedatei finden, die Ihrer Kamera entspricht. Dazu verwenden wir das XAWTV -Dienstprogramm:
NOTIZ: Wenn der Befehl XAWTV nicht beiträgt, müssen Sie das XAWTV -Paket installieren.
$ xawtv -hwscan
AUSGANG:
Dies ist XAWTV-3.95.DFSG.1, Laufen auf Linux/i686 (2.6.26-2-686)
Auf der Suche nach verfügbaren Geräten
Port 65-96
Typ: xvideo, Bildskaler
Name: NV Video Blitter
/dev/Video0: OK [-Device/dev/Video0]
Typ: v4l2
Name: UVC -Kamera (046d: 0990)
Flaggen: Capture
Die mit meiner Kamera assrierte Gerätedatei ist /dev /video0 . Möglicherweise sehen Sie auch einen Fehler in Ihrem Terminal, in dem es heißt: Öffnen /dev /Video0: Erlaubnis abgelehnt. Um dieses Problem zu beheben, müssen Sie sich selbst zu einem Teil einer Gruppe „Video“ machen. Testen Sie nun Ihre Kamera mit einem folgenden Linux -Befehl:
$ xawtv -c /dev /Video0
Wenn Sie in einigen der vorherigen Schritte einige Probleme hatten, finden Sie hier einige Links, die Sie möglicherweise dabei unterstützen, Ihr Problem zu beheben:
- Linux OpenCV -Kamerakompatibilität
- Linux Webcam Howto
- Unterstützte Kameras mit SPCA5XX -Treibern
- Unterstützte Kameras mit UVCVideo -Treibern
Um eine Kamera mit der OpenCV -Bibliothek zu verwenden, ist es einfach, ein Programm zum Abspielen eines Videos zu schreiben. Kopieren Sie einen zuvor erstellten Quellcode Ihres Video Player -Programms und ändern Sie die Zeile:
Cvcapture* capture = cvCreateFileCapture (argv [1]);
Zu:
Cvcapture* capture = cvCreateCameracapture (0);
Der gesamte Code sieht also ähnlich aus wie unten:
#include "HighGui.H"
int main (int argc, char ** argv)
cvnamedWindow ("example2", cv_window_autosize);
Cvcapture* capture = cvCreateCameracapture (0);
Iplimage* rahmen;
während (1)
Frame = CVQueryFrame (Capture);
Wenn( !Rahmen) Break;
cvshowimage ("Beispiel2", Rahmen);
char c = cvwaitkey (33);
if (c == 27) brechen;
cvReleascapture (& capture);
cvDestroyWindow ("Beispiel2");
Beachten. In diesem Fall wird OpenCV die erste verfügbare Kamera in Ihrem System verwenden. Kompilieren Sie und führen Sie dieses Programm aus und wenn bis zu diesem Zeitpunkt alles gut lief, sollten Sie sich auf Ihrem Bildschirm sehen.
NOTIZ: Kehren Sie oben zu einem Bildkonvertierungsabschnitt zurück, wenn Sie Hilfe zum Kompilieren dieses OpenCV -Programms benötigen.
Schreiben Sie AVI -Datei aus einer Kamera
Das letzte Beispiel wird versuchen, eine Eingabe von einer Kamera zu lesen und in eine Datei zu schreiben. In der Zwischenzeit zeigt das Programm auch ein Fenster mit einem Kameraeingangsvideo -Stream an. Die Videoeingabe wird in einer Datei gespeichert, die als Argument in der Befehlszeile geliefert wird. Der verwendete Codec wird durch viercc (vier Zeichencode) MJPG angegeben, in dem in diesem Fall Motion JPEG ist. Dieses Beispielprogramm ist sehr einfach und es gibt viel Raum für Verbesserungen:
#enthalten
#enthalten
Main (int argc, char* argv [])
Cvcapture* capture = null;
capture = cvCreateCameracapture (0);
IPlimage *Frames = CVQueryFrame (Capture);
// Erhalten Sie eine Rahmengröße, die von der Schriftstellungsstruktur verwendet werden soll
Cvsize size = cVSIZE (
(int) cvgetCaptureProperty (Capture, cv_cap_prop_frame_width),
(int) cvgetCaptureProperty (Capture, cv_cap_prop_frame_height)
);
// Schriftstellungsstruktur deklarieren
// Viercc (vier Zeichencode) MJPG verwenden, die Bewegung JPEG Codec
// Die Ausgabedatei wird durch das erste Argument angegeben
Cvvideowriter *writer = cvCrereatevideowriter (
Argv [1],
Cv_fourcc ('m', 'j', 'p', 'g'),
30, // FPS einstellen
Größe
);
// Erstellen Sie ein neues Fenster
cvnamedWindow ("Aufnahme ... drücken Sie ESC, um anzuhalten !", Cv_window_autosize);
// Capture im Fenster anzeigen und in einer Datei aufnehmen
// Aufzeichnen, bis der Benutzer den ESC -Schlüssel trifft
während (1)
Frames = CVQueryFrame (Capture);
Wenn( !Frames) brechen;
Cvshowimage ("Aufnahme ... drücken Sie ESC, um anzuhalten !", Frames);
CVWriteFrame (Schriftsteller, Frames);
char c = cvwaitkey (33);
if (c == 27) brechen;
cvReleasevideowriter (& writer);
cvReleascapture (& capture);
cvDestroyWindow ("Aufnahme ... drücken Sie ESC, um anzuhalten !");
return0;
Angenommen, Sie haben dieses Programm als „Save-Kamera-Input“ gespeichert und zusammengestellt.AVI mit diesem Befehl:
NOTIZ: Kehren Sie oben zu einem Bildkonvertierungsabschnitt zurück, wenn Sie Hilfe zum Kompilieren dieses OpenCV -Programms benötigen.
$ ./Video-Datei Save-Kamera-Input.Avi
Abschluss
Dieser Artikel sollte einem Sie aus einer Installation einen guten Start in die OpenCV -Bibliothek geben. Beispiele, die vorgestellt wurden. Selbst aus diesen einfachen OpenCV -Beispielen ist auch klar, dass OpenCV eine hoch zivilisierte Bibliothek ist, da Sie mit nur paar Zeilen von OpenCV -Code großartige Ergebnisse erzielen können. Ihr Kommentar zu diesem Artikel wird sehr geschätzt, da er einen großen Einfluss auf die Artikelqualität haben kann. Über OpenCV kommt mehr zu verzeichnen. Bleiben.Org RSS -Feed (obere linke Ecke).
Verwandte Linux -Tutorials:
- Dinge zu installieren auf Ubuntu 20.04
- Wie man Kali Linux und Windows 10 Dual -Boot -Start hat
- Beste Videobearbeitungssoftware unter Linux
- Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
- Eine Einführung in Linux -Automatisierung, Tools und Techniken
- Bester PDF -Leser für Linux
- So erhalten Sie die MAC -Adresse unter Linux
- Mint 20: Besser als Ubuntu und Microsoft Windows?
- Manjaro Linux Windows 10 Dual Start
- Linux -Konfigurationsdateien: Top 30 am wichtigsten