Inhaltsverzeichnis:
- Schritt 1: Die Header-Dateien
- Schritt 2: Aufnehmen des Videos
- Schritt 3: Rahmen aufnehmen und Farbe definieren
- Schritt 4: Maskieren und Extrahieren
- Schritt 5: Endlich Anzeige
- Schritt 6: Demo
Video: Einfache Farberkennung mit OpenCV - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Hi! Heute zeige ich eine einfache Methode zum Erkennen einer Farbe aus einem Live-Video mit OpenCV und Python.
Grundsätzlich werde ich nur testen, ob die erforderliche Farbe im Hintergrundrahmen vorhanden ist oder nicht, und mit OpenCV-Modulen werde ich diesen Bereich maskieren und gleichzeitig den Rahmen anzeigen.
Schritt 1: Die Header-Dateien
Jetzt habe ich hier zwei Header-Dateien verwendet, nämlich cv2 und NumPy. Grundsätzlich ist cv2 die OpenCV-Bibliothek, die alle C++-Dateien lädt, die bei der Verwendung der Befehle in den Codes wichtig sind (sie enthält alle Definitionen).
Und Numpy ist eine Python-Bibliothek, die zum Speichern eines mehrdimensionalen Arrays unerlässlich ist. Wir werden verwenden, um unsere Farbbereichskoordinaten zu speichern.
Und numpy als np hilft unserem Code im Grunde, ein wenig zu verkürzen, indem jedes Mal np anstelle von numpy verwendet wird.
Schritt 2: Aufnehmen des Videos
Dies ist bei der Verwendung von Python ziemlich einfach. Hier müssen wir nur den Videorecorder einschalten, damit er mit der Aufnahme der Frames beginnen kann.
Jetzt gibt der Wert im VideoCapture die Kamera an, in meinem Fall ist die Kamera mit meinem Laptop verbunden, also 0.
Sie können ähnlich wie bei 1 für die sekundäre Kamera usw. vorgehen. VideoCapture erstellt das Objekt dafür.
Schritt 3: Rahmen aufnehmen und Farbe definieren
Hier müssen wir jetzt etwas tun, damit wir den sofortigen Frame des Videos aufnehmen können, der uns hilft, das Bild zu extrahieren, und wir können daran nach Bedarf arbeiten.
Die Schleife "while" hilft uns, die Schleife zu unserer Anforderungszeit auszuführen. Jetzt wird " _, frame = cap.read() " verwendet, um die Gültigkeit des erfassten Frames zu überprüfen und zu speichern. "cap.read() ist eine boolesche Variable und gibt true zurück, wenn der Frame korrekt gelesen wird und wenn Sie keine Frames erhalten, wird kein Fehler angezeigt, Sie erhalten einfach None.
Jetzt definieren Zeile 11 und Zeile 12 im Wesentlichen den Farbbereich, den wir erkennen müssen. Dafür habe ich blaue Farbe verwendet.
Sie können mit jeder Farbe fortfahren, für die Sie nur BGR-Werte für diese bestimmte Farbe eingeben müssen. Es ist besser, zwei Arrays mit numpy-Arrays zu definieren, da das Erkennen einer bestimmten Farbe in der realen Welt unseren Zweck nicht erfüllt, sondern wir definieren einen Bereich blauer Farbe, damit er innerhalb des Bereichs erkennt.
Dazu habe ich zwei Variablen definiert, die die unteren BGR-Werte und die oberen BGR-Werte speichern.
Schritt 4: Maskieren und Extrahieren
Hier kommt nun die Hauptaufgabe, den Rahmen zu maskieren und die Farbe des Rahmens zu extrahieren. Ich habe die vordefinierten Befehle in der Bibliothek in OpenCV verwendet, um die Maskierung durchzuführen. Grundsätzlich ist das Maskieren der Vorgang, einen Teil des Frames zu entfernen, d.h. wir entfernen die Pixel, deren Farb-BGR-Werte nicht im definierten Farbbereich liegen, und dies wird von cv2.inRange durchgeführt. Danach wenden wir den Farbbereich abhängig von den Pixelwerten auf das maskierte Bild an und verwenden dafür cv2.bitwise_and. Es wird einfach die Farben dem maskierten Bereich abhängig von den Masken- und Farbbereichswerten zuweisen.
Link für cv2. bitwise_and:
Schritt 5: Endlich Anzeige
Hier habe ich die grundlegende cv2.imshow() zum Anzeigen für jeden Frame als Bild verwendet. Da ich die Rahmendaten in Variablen gespeichert habe, kann ich sie in imshow() abrufen. Hier habe ich alle drei Rahmen angezeigt, original, maskiert und farbig.
Jetzt müssen wir die while-Schleife verlassen. Dazu können wir einfach cv2.wait. Key() implementieren. Im Grunde gibt es die Wartezeit vor einer Antwort an. Wenn Sie also 0 übergeben, wird unendlich gewartet und 0xFF teilt mit, dass die Architektur 64-Bit ist. " ord() " gibt das Zeichen an, das beim Drücken den Break-Befehl im if-Block ausführt und aus der Schleife kommt.
Anschließend schließt cap.release() den Videorecorder und cv2.destroyAllWindows() schließt alle geöffneten Fenster.
Wenn Sie ein Problem haben, lassen Sie es mich bitte wissen.
Link zum Quellcode:
Empfohlen:
So erstellen Sie eine einfache Website mit Notepad – wikiHow
Wie erstelle ich eine einfache Website mit Notepad: Hat sich jemand gefragt, wie ich aus einem einfachen Schreibprogramm eine Website erstelle? Website nur mit Notizblock
So erstellen Sie Ihre erste einfache Software mit Python – wikiHow
So erstellen Sie Ihre erste einfache Software mit Python: Hallo, willkommen zu diesem Instructables. Hier werde ich erzählen, wie Sie Ihre eigene Software erstellen. Ja, wenn Sie eine Idee haben… aber wissen, wie Sie neue Dinge umsetzen können oder daran interessiert sind, Neues zu schaffen, dann ist es das Richtige für Sie
So erstellen Sie eine einfache Webseite mit Klammern für Anfänger – wikiHow
So erstellen Sie eine einfache Webseite mit Klammern für Anfänger: EinführungDie folgenden Anweisungen bieten eine Schritt-für-Schritt-Anleitung zum Erstellen einer Webseite mit Klammern. Brackets ist ein Quellcode-Editor mit Schwerpunkt auf Webentwicklung. Es wurde von Adobe Systems erstellt und ist eine kostenlose Open-Source-Software, die
So erstellen Sie eine schlanke und einfache Website mit Bootstrap 4: 7 Schritte
So erstellen Sie eine schlanke und einfache Website mit Bootstrap 4: Der Zweck dieses Instructable ist es, denjenigen, die mit der Programmierung - HTML oder anders - vertraut sind, eine einfache Einführung in die Erstellung eines Online-Portfolios mit Bootstrap 4 zu geben. Ich werde Sie durch die Ersteinrichtung führen der Website, wie man ein paar erstellt
Einfache Anleitung zum Meistern von AutoCAD MEP (Ducting): 27 Schritte (mit Bildern)
Einfache Anleitung zum Meistern von AutoCAD MEP (Ducting): AutoCAD MEP scheint sich nicht viel von AutoCAD zu unterscheiden, aber wenn es um das Zeichnen von Mechanik, Elektrik & Klempnerdienste (MEP) können Sie definitiv viel Zeit und Mühe sparen - vorausgesetzt, Sie sind mit den Grundlagen gut ausgestattet