opencv

Computer Vision Die Grundlagen

Computer Vision Die Grundlagen
Opencv (Open Source Computer Vision Library) ist ein Python-Modul, das für Computer Vision verwendet wird. OpenCV ist ein kostenloses Open-Source-Modul, das Hunderte von Algorithmen enthält, um verschiedene Aufgaben auszuführen. Alles von der Gesichtserkennung bis zur Bewegungserkennung kann mit OpenCV . durchgeführt werden. In diesem Handbuch werden wir uns jedoch die Grundlagen von OpenCV ansehen.

Zuerst installieren wir OpenCV:

pip3 installiere opencv-python

Bilder lesen und anzeigen

Das erste, was wir lernen müssen, ist das Lesen und Schreiben von Bildern. Das Lesen einer Bilddatei, die Eingabe des vollständigen Pfads zur Datei oder des Dateinamens (wenn sich die Datei im Python-Ordner befindet) und das Hinzufügen eines Flags erfolgt mit cv2.imread(). Das Flag kann den Wert 1 (für ein Farbbild), 0 (für Graustufen) oder -1 (für Farbbild mit Kanälen) annehmen. Man kann den cv2 . verwenden.imshow()-Funktion zum Anzeigen des Bildes; hier werden zwei Argumente übergeben - ein Name für das Bild und das anzuzeigende Bild. Als nächstes verwenden wir die cv2.waitKey()-Funktion, um auf eine Tastatureingabe zu warten; eine 0 für den cv2.Die waitKey(0)-Funktion impliziert eine permanente Wartezeit. Auf der anderen Seite ist der cv2.Die Funktion DestroyAllWindows() schließt die Fenster.

Dadurch wird ein Bild gelesen und geöffnet und das Bild geöffnet, bis Sie es schließen:

CV2 importieren import
Bild = cv2.imread('LinuxLogo.jpg', 1)
cv2.imshow('Bild', Bild)
cv2.waitKey(0)
cv2.zerstörenAllWindows()

Bilder schreiben

Wir verwenden die cv2.imwrite() Funktion um ein Bild zu speichern. Diese Funktion benötigt zwei Parameter - einen Namen zum Speichern des Bildes und das Bild, das Sie speichern möchten.

CV2 importieren import
Bild = cv2.imread('identifizieren.jpg', -1)
cv2.imwrite('save_image.png', Bild)

Video von der Webcam aufnehmen

Um Videos aufzunehmen, beginnen wir mit der Initialisierung des cv2.VideoCapture()-Funktion. Wir verwenden dann eine „While“-Schleife, um das Video weiter aufzunehmen. Während der Benutzer die Exit-Taste nicht drückt, können wir die Frames lesen und mit read() und cv2 anzeigen.imshow()-Funktion. Dann setzen wir eine „break“-Taste ein, um die Schleife zu verlassen; in diesem Fall ist die Zahl 27 die ESC-Taste. Drückt der Benutzer die ESC-Taste, bricht er aus der Schleife aus. Sobald Sie die Schleife verlassen haben, müssen Sie die Aufnahme freigeben.

numpy als np importieren
CV2 importieren import
erfassen = cv2.Videoaufnahme(0)
während(wahr):
ret, frame = erfassen.lesen()
cv2.imshow('rahmen', rahmen)
wenn cv2.waitKey(1) & 0xFF == 27:
Unterbrechung
Erfassung.Veröffentlichung()
cv2.zerstörenAllWindows()

Abspielen einer Videodatei

Das Abspielen einer Videodatei ist wie das Aufnehmen eines Videos von einer Webcam. Dazu muss der cv2.Die Funktion VideoCapture() wird verwendet; der Name der Videodatei, die Sie abspielen möchten, wird dann zur Funktion hinzugefügt. Die „While“-Schleife wird wieder verwendet, und die Exit-Taste ist in diesem Fall die „s“-Taste auf der Tastatur. Dies öffnet und spielt die Videodatei ab und schließt sie, wenn der Benutzer die „s“-Taste drückt.

numpy als np importieren
CV2 importieren import
erfassen = cv2.VideoCapture("Megamind.avi")
während(wahr):
ret, frame = erfassen.lesen()
cv2.imshow('frame', frame)
wenn cv2.waitKey(1) & 0xFF == ord("s"):
Unterbrechung
Erfassung.Veröffentlichung()
cv2.zerstörenAllWindows()

Speichern einer Videodatei

Das Speichern einer Videodatei erfordert etwas mehr Arbeit. Der cv2.Die Funktion VideoWriter() benötigt insgesamt 4 Parameter - den Namen der Ausgabedatei, den FourCC-Code, die Anzahl der Bilder pro Sekunde und die Bildgröße. Außerdem muss der FourCC-Code angegeben werden, der der Videocodec ist, der den cv2 verwendet.VideoWriter_fourcc()-Funktion. Verwenden der Aufnahme.isOpened(), wir lesen den Frame und schreiben den Ausgabeframe. Wir können die Frames auch mit dem cv2 anzeigen.imshow()-Funktion. Dann verwenden wir cv2.waitKey(1) & 0xFF == ord('s'), um eine Exit-Taste zu setzen. Wenn der Benutzer in diesem Fall die Taste „s“ drückt, verlässt er die Schleife und gibt dann die Aufnahme und die Ausgabe frei und schließt die Fenster.

numpy als np importieren
CV2 importieren import
erfassen = cv2.Videoaufnahme(0)
viercc = cv2.VideoWriter_fourcc(*'XVID')
Ausgang = cv2.VideoWriter('Ausgabe.avi',fourcc, 30.0, (640,480))
während (einfangen.ist geöffnet()):
ret, frame = erfassen.lesen()
Ausgabe.schreiben (Rahmen)
cv2.imshow('frame',frame)
wenn cv2.waitKey(1) & 0xFF == ord('s'):
Unterbrechung
Erfassung.Veröffentlichung()
Ausgabe.Veröffentlichung()
cv2.zerstörenAllWindows()

Zeichnen von Linien, Kreisen, Rechtecken und Texten

Das erste, was wir lernen werden zu zeichnen, ist eine Linie. Um eine Linie zu zeichnen, verwenden wir einfach die cv2.line()-Funktion. Die Funktion benötigt 5 Argumente - das Quellvideo, den Startpunkt, den Endpunkt, die Farbe und die Linienstärke. Im folgenden Fall haben wir uns für eine rechteckige Umrandung (bestehend aus 4 Linien) entschieden:

CV2 importieren import
erfassen = cv2.VideoCapture('vtest.avi')
während Wahr:
ret, frame = erfassen.lesen()
width = int(capture.erhalten(3))
Höhe = int (Erfassung.holen(4))
line1 = cv2.Linie(Rahmen, (0,0), (0,Höhe), (255, 255, 255),10)
line2 = cv2.line(line1, (0, 0), (width,0),(255, 255, 255), 10)
line3 = cv2.line(line2, (0,height), (width, height), (255, 255, 255), 10)
line4 = cv2.line(line3, (Breite, 0), (Breite, Höhe), (255, 255, 255), 10)
cv2.imshow('frame', line4)
wenn cv2.waitKey(40) == ord('q'):
Unterbrechung
Erfassung.Veröffentlichung()
cv2.zerstörenAllWindows()

Als nächstes zeichnen wir sowohl einen Kreis als auch ein Rechteck in das Video. Um ein Rechteck zu zeichnen, verwenden wir die cv2.Rechteck()-Funktion, die 5 Argumente verwendet, ähnlich wie die Zeile. Um einen Kreis zu zeichnen, verwenden wir die Funktion cv2.circle(), das auch 5 Argumente benötigt - das Quellvideo, den Mittelpunkt, den Radius, die Farbe und die Dicke.

CV2 importieren import
erfassen = cv2.VideoCapture('vtest.avi')
während Wahr:
ret, frame = erfassen.lesen()
width = int(capture.erhalten(3))
Höhe = int (Erfassung.holen(4))
Rechteck = cv2.Rechteck(Rahmen, (150, 15), (650, 550), (0,0,0), 11)
cv2.Kreis (Rechteck, (250, 250), 60, (0,0,0), 11)
cv2.imshow('frame', frame)
wenn cv2.waitKey(40) == ord('q'):
Unterbrechung
Erfassung.Veröffentlichung()
cv2.zerstörenAllWindows()

Jetzt fügen wir dem Video, das wir haben, etwas Text hinzu. Dazu müssen wir eine Schriftart angeben; hier haben wir cv2 gewählt.FONT_HERSHEY_SIMPLEX. Sobald die Schriftart ausgewählt ist, können wir die Funktion cv2 . verwenden.putText() um den Rest zu erledigen. Lebenslauf2.putText() benötigt 8 Argumente - das Quellvideo, den Text, den Sie schreiben möchten, die gewünschte Position, die Schriftart, die Vergrößerung, die Farbe, die Dicke und cv2.LINE_AA (dadurch sieht alles besser aus).

CV2 importieren import
erfassen = cv2.VideoCapture('vtest.avi')
während Wahr:
ret, frame = erfassen.lesen()
width = int(capture.erhalten(3))
Höhe = int (Erfassung.holen(4))
Schriftart = cv2.FONT_HERSHEY_SIMPLEX
Bild = cv2.putText(frame, "VTEST.AVI", (200, 200), Schriftart, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow('rahmen', bild)
wenn cv2.waitKey(40) == ord('q'):
Unterbrechung
Erfassung.Veröffentlichung()
cv2.zerstörenAllWindows()

OpenCV ist zu vielen großartigen Dingen fähig, bei denen man irgendwo anfangen muss. Es könnte lernen, Bilder und Videos zu erstellen und zu speichern. In diesem Tutorial haben wir die Grundlagen der Computer Vision gelernt.

Viel Spaß beim Codieren!

Beste Linux-Distributionen für Gaming im Jahr 2021
Das Linux-Betriebssystem hat sich weit von seinem ursprünglichen, einfachen, serverbasierten Aussehen entfernt. Dieses Betriebssystem hat sich in den ...
So erfassen und streamen Sie Ihre Gaming-Sitzung unter Linux
In der Vergangenheit galt das Spielen von Spielen nur als Hobby, aber mit der Zeit verzeichnete die Spieleindustrie ein enormes Wachstum in Bezug auf ...
Beste Spiele zum Spielen mit Handtracking
Oculus Quest hat kürzlich die großartige Idee des Hand-Trackings ohne Controller vorgestellt. Mit einer ständig steigenden Anzahl von Spielen und Akti...