So verwenden Sie Python, um Formen auf Bildern zu verfolgen
Einführung:
Bildverarbeitung ist ein wichtiger Teil des Bereichs Computer Vision, und die Verfolgung bestimmter Formen in Bildern ist eine der häufigsten Aufgaben. In diesem Artikel wird die Verwendung von Python und der OpenCV-Bibliothek zum Verfolgen von Formen in Bildern vorgestellt und entsprechende Codebeispiele bereitgestellt.
1. Vorbereitung:
Bevor wir mit dem Schreiben von Code beginnen, müssen wir Python- und OpenCV-Bibliotheken installieren und ein Bild vorbereiten, das die Zielform als Eingabe enthält. Stellen Sie zunächst sicher, dass Sie Python installiert haben. Sie können die für Ihr Betriebssystem geeignete Version von der offiziellen Python-Website herunterladen und installieren. Als nächstes müssen wir die OpenCV-Bibliothek mit dem Befehl pip installieren. Öffnen Sie ein Terminal (oder eine Befehlszeile) und geben Sie den folgenden Befehl ein, um OpenCV zu installieren:
pip install opencv-python
2. Bibliotheken importieren und Bilder lesen:
Bevor wir Code formell schreiben, müssen wir zunächst die entsprechende Bibliothek importieren. Python stellt die Importanweisung zum Importieren der Bibliotheken bereit, die Sie verwenden müssen. In dieser Aufgabe müssen wir die cv2-Bibliothek importieren (die Python-Schnittstelle zur OpenCV-Bibliothek). Darüber hinaus müssen wir auch die Numpy-Bibliothek importieren, um Array-Operationen zu unterstützen. Hier ist der Code zum Importieren der erforderlichen Bibliotheken:
import cv2
import numpy as np
Als nächstes müssen wir das Bild lesen und in ein Graustufenbild konvertieren. Graustufenbilder sind einfacher zu verarbeiten und können den Berechnungsaufwand reduzieren. Da zukünftige Arbeiten das Originalbild möglicherweise verändern, können wir eine Kopie verwenden, um das Graustufenbild zu speichern. Das Folgende ist der Code, um das Bild zu lesen und in ein Graustufenbild umzuwandeln:
image = cv2.imread("input.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
3 Verfolgung:
Bevor wir die Formverfolgung durchführen, müssen wir zunächst eine Formerkennung durchführen. OpenCV bietet eine Funktion cv2.findContours() zum Finden von Konturen in Bildern. Diese Funktion akzeptiert ein binärisiertes Bild als Eingabe und gibt eine Liste aller Konturen im Bild zurück. Hier ist ein Codebeispiel für die Formerkennung:
ret, thresh = cv2.threshold(gray, 127, 255, 0)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
Next , Wir können die Funktion cv2. approxPolyDP() verwenden, um die Kontur anzunähern und sie glatter zu machen. Der Grad der Annäherung kann durch Anpassen des Werts des zweiten Parameters Epsilon dieser Funktion geändert werden. Kleine Epsilon-Werte führen zu genaueren Annäherungen, während große Epsilon-Werte zu gröberen Annäherungen führen. Hier ist ein Codebeispiel für die Formnäherung:
epsilon = 0,04 * cv2.arcLength(contour, True)
approx = cv2. approxPolyDP(contour, epsilon, True)
Schließlich können wir die Funktion cv2.drawContours() verwenden Zeichnen Sie die erkannten Formen auf das Originalbild. Das Folgende ist ein Codebeispiel zum Zeichnen von Konturen:
cv2.drawContours(image, [ungefähr], 0, (0, 255, 0), 2)
Code-Erklärung:
Im obigen Code ist ret ein boolescher Wert for Gibt an, ob der Schwellenwertvorgang erfolgreich war. thresh ist ein Schwellenwertbild, das zur Konturerkennung verwendet wird. Konturen ist eine Liste mit allen erkannten Konturen. Hierarchie ist die hierarchische Information der Gliederung. Epsilon ist ein Parameter zur Annäherung an die Kontur. approx ist die angenäherte Kontur. Abschließend wird die Funktion cv2.drawContours() zum Zeichnen von Konturen verwendet.
4. Anzeige und Ergebnisse:
Nach Abschluss der Formverfolgung können wir das Ergebnisbild anzeigen und als neue Datei speichern. Das Folgende ist ein Codebeispiel zum Anzeigen und Speichern von Ergebnissen:
cv2.imshow("Ergebnis", Bild)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite("output.jpg", Bild )
Code-Erklärung:
Im obigen Code wird die Funktion cv2.imshow() verwendet, um das Ergebnisbild anzuzeigen. cv2.waitKey(0) wird verwendet, um darauf zu warten, dass der Benutzer eine beliebige Taste drückt, bevor das Bildfenster geschlossen wird. Die Funktion cv2.destroyAllWindows() wird verwendet, um alle geöffneten Fenster zu schließen. Abschließend wird die Funktion cv2.imwrite() verwendet, um das resultierende Bild zu speichern.
Zusammenfassung:
In diesem Artikel wird erläutert, wie Sie mit Python und der OpenCV-Bibliothek Formen in Bildern verfolgen. Wir haben uns zunächst mit der Vorbereitung vertraut gemacht, dann die benötigten Bibliotheken importiert und die Bilder gelesen. Als nächstes führten wir eine Formerkennung und -verfolgung durch, um die Zielform durch Annähern von Konturen und Zeichnen von Konturen zu verfolgen. Abschließend zeigen wir das resultierende Bild an und speichern die Tracking-Ergebnisse.
Hier ist das vollständige Codebeispiel:
import cv2 import numpy as np image = cv2.imread("input.jpg") gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(gray, 127, 255, 0) contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) for contour in contours: epsilon = 0.04 * cv2.arcLength(contour, True) approx = cv2.approxPolyDP(contour, epsilon, True) cv2.drawContours(image, [approx], 0, (0, 255, 0), 2) cv2.imshow("Result", image) cv2.waitKey(0) cv2.destroyAllWindows() cv2.imwrite("output.jpg", image)
Ich hoffe, dieser Artikel kann den Lesern helfen, zu verstehen, wie man Python und die OpenCV-Bibliothek verwendet, um Formen in Bildern zu verfolgen. Durch das Erlernen und Anwenden der in diesem Artikel bereitgestellten Codebeispiele können Leser problemlos Formverfolgungsaufgaben ausführen und eine Rolle in Bildverarbeitungsanwendungen spielen.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Python, um Formen auf Bildern nachzuzeichnen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!