Konturen sind definiert als die Linie, die alle Punkte entlang der Bildgrenze verbindet, die dieselbe Intensität haben. Konturen sind nützlich bei der Formanalyse, beim Ermitteln der Größe des interessierenden Objekts und bei der Objekterkennung.

OpenCV verfügt über eine findContour()Funktion, mit der die Konturen aus dem Bild extrahiert werden können. Es funktioniert am besten bei Binärbildern, daher sollten wir zuerst Schwellenwerttechniken, Sobel-Kanten usw. anwenden.

Unten finden Sie den Code zum Finden von Konturen -

import cv2 
import numpy as np 
  
image = cv2.imread('C://Users//gfg//shapes.jpg') 
cv2.waitKey(0) 
  
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 
  
edged = cv2.Canny(gray, 30, 200) 
cv2.waitKey(0) 
  
contours, hierarchy = cv2.findContours(edged,  
    cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) 
  
cv2.imshow('Canny Edges After Contouring', edged) 
cv2.waitKey(0) 
  
print("Number of Contours found = " + str(len(contours))) 
  
cv2.drawContours(image, contours, -1, (0, 255, 0), 3) 
  
cv2.imshow('Contours', image) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

Ausgabe:

Wir sehen, dass es drei wesentliche Argumente in der cv2.findContours()Funktion gibt. Das erste ist das Quellbild, das zweite ist der Konturabrufmodus, das dritte ist die Konturnäherungsmethode und gibt das Bild, die Konturen und die Hierarchie aus. ' Konturen ' ist eine Python-Liste aller Konturen im Bild. Jede einzelne Kontur ist ein Numpy-Array von (x, y) -Koordinaten von Grenzpunkten des Objekts.

Konturannäherungsmethode -
Oben sehen wir, dass Konturen die Grenzen einer Form mit derselben Intensität sind. Es speichert die (x, y) -Koordinaten der Grenze einer Form. Aber speichert es alle Koordinaten? Dies wird durch diese Konturnäherungsmethode spezifiziert.
Wenn wir passieren cv2.CHAIN_APPROX_NONE, werden alle Grenzpunkte gespeichert. Aber brauchen wir eigentlich alle Punkte? Zum Beispiel, wenn wir die Kontur einer geraden Linie finden müssen. Wir brauchen nur zwei Endpunkte dieser Linie. Das cv2.CHAIN_APPROX_SIMPLEmacht es. Es entfernt alle redundanten Punkte und komprimiert die Kontur, wodurch Speicherplatz gespart wird.