OpenCV Canny in Python
Wir verwenden die opencv
-Bibliothek, um mit Bildern und Grafiken für das Computersehen in der künstlichen Intelligenz, dem maschinellen Lernen und weiteren Techniken zu arbeiten. Wir können die Funktionalitäten aus dieser Bibliothek nutzen, um Bilder effizient zu lesen und zu verarbeiten.
Dieses Tutorial demonstriert die Funktion cv2.canny()
in Python.
Verwenden Sie die Funktion cv2.canny()
in Python
Die Funktion cv2.canny()
implementiert den von John F. Canny entwickelten Canny Edge Detection-Algorithmus. Wir können diese Funktion verwenden, um Kanten aus einem bestimmten Bild zu erkennen.
Der Algorithmus selbst hat mehrere Stufen.
-
Die erste Stufe umfasst die Rauschunterdrückung, und dafür verwendet der Algorithmus einen 5x5-Gauß-Filter.
-
Der nächste Schritt besteht darin, den Intensitätsgradienten für das gegebene Bild zu finden. In dieser Phase wird das Bild geglättet und dann an den Sobel-Kernel übergeben, wo es entlang der x- und y-Achse gefiltert wird und sein Gradient für jede Achse gefunden wird.
-
In der dritten Stufe wird jeder Pixel mit den lokalen Maxima in Richtung des Gradienten überprüft, um die unerwünschten Pixel, die keine Kante bilden, zu entfernen.
-
In der letzten Phase werden die Kanten klassifiziert. Es werden zwei Schwellwerte
minVal
undmaxVal
genommen.Kanten mit Steigungswerten größer als
maxVal
sind die Kanten, solche unterhalb vonminVal
nicht. Die restlichen dieser Schwellenwerte werden basierend auf ihrer Konnektivität kategorisiert.
Alle oben genannten Schritte werden von der Funktion cv2.canny()
implementiert. Es ist notwendig, diese Stufen zu kennen, während die Parameter für diese Funktion bestimmt werden.
Im folgenden Beispiel werden wir die Kanten eines Bildes erkennen.
import cv2
img = cv2.imread("deftstack.png")
e = cv2.Canny(img, threshold1=50, threshold2=100)
cv2.imshow("Edges Detected", e)
cv2.waitKey(0)
cv2.destroyAllWindows()
Im obigen Beispiel lesen wir das Bild mit der Funktion cv2.imread()
. Die Kantenerkennung für dieses Bild erfolgt mit der Funktion cv2.canny()
.
Beachten Sie die beiden Parameter in der Funktion threshold1
und threshold2
. Diese beiden Parameter sind der Wert der zuvor besprochenen Schwellenfrequenz minVal
und maxVal
.
Diese beiden Werte müssen zwingend angegeben werden.
Nachdem wir die Kanten für das gegebene Bild klassifiziert haben, zeigen wir es in einem neuen Fenster mit der Funktion cv2.imshow()
an. Die Funktion cv2.waitkey(0)
wird im Beispiel verwendet, um zu verhindern, dass der Interpreter das erstellte Fenster automatisch schließt und darauf wartet, dass der Benutzer eine Taste drückt.
Die Funktion cv2.destroyAllWindows()
schließt alle Fenster.
Die Funktion cv2.canny()
akzeptiert auch zwei zusätzliche optionale Parameter namens apertureSize
und L2gradient
. Der Parameter apertureSize
gibt die Grösse der Blende für den Sobel-Kernel an.
Standardmäßig ist der Wert drei und kann jeden ungeraden Wert zwischen drei und fünf annehmen. Wir können die apertureSize
erhöhen, um mehr Features aus dem Bild zu bekommen.
Der L2gradient
nimmt einen True
- oder False
-Wert an und ist standardmäßig False
.
Wenn wir den L2gradient
-Parameter als True
angeben, wird der neue L2Gradient
-Algorithmus verwendet, um den Gradientenwert zu berechnen; andernfalls wird die herkömmliche Gleichung verwendet. Der neue Algorithmus ist tendenziell etwas genauer.
Abschluss
Wir haben in diesem Tutorial besprochen, wie man die Funktion cv2.canny()
verwendet. Wir haben den Erkennungsalgorithmus von Canny Edge besprochen und wie diese Funktion ihn intern implementiert.
Die Funktion wurde an einem Beispiel demonstriert. Wir haben auch die Parameter dieser Funktion besprochen.
Einige waren obligatorisch, threshold1
und threshold2
, während die anderen optional waren, apertureSize
und L2gradient
.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn