[PYTHON] Ausführungsbeispiel für die Blob-Erkennung mit OpenCV

Einführung

Ein Blob ist ein Bereich in einem Bild, der ähnliche Eigenschaften aufweist. In der Abbildung unten kann beispielsweise eine Figur wie ein Kreis als Blob bezeichnet werden.

shapes.jpg

OpenCV verfügt über eine integrierte Funktion, die Blobs automatisch erkennt und das Auffinden erleichtert.

Was du machen willst

Ich möchte eine runde Form finden und zählen.

Code

blob.py


import cv2 
import numpy as np 
  
#Bilder laden
image = cv2.imread('shapes.jpg', 0)

#Parameterinitialisierung
params = cv2.SimpleBlobDetector_Params() 

#Blob-Bereich (minArea<= blob < maxArea)
params.filterByArea = True
params.minArea = 100
  
#Rundheit (4 ∗ π ∗ Fläche)/Umfang ∗ definiert durch Umfang)
#(minCircularity <= blob < maxCircularity)
params.filterByCircularity = True 
params.minCircularity = 0.85
  
#Konvexe Oberflächeninformationen (minConvexity)<= blob < maxConvexity)
params.filterByConvexity = True
params.minConvexity = 0.1
      
#Stellt ein Oval dar (minInertiaRatio)<= blob < maxInertiaRatio)
params.filterByInertia = True
params.minInertiaRatio = 0.1

#Detektorerstellung
detector = cv2.SimpleBlobDetector_create(params) 

#Blob-Erkennung
keypoints = detector.detect(image) 

#Kreise den Klecks in Rot ein
blank = np.zeros((1, 1))  
blobs = cv2.drawKeypoints(image, keypoints, blank, (0, 0, 255), 
                          cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) 

#Anzahl der Blobs
count = len(keypoints) 
print(f'Anzahl der Kreise: {count}')
  
#Bild anzeigen
cv2.imshow("out.jpg ", blobs) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

Ergebnis

>python blob.py
Anzahl der Kreise: 8

out.jpg

Geschichte, die bei der Ausführung fehlgeschlagen ist

Als ich den auf einer anderen Site veröffentlichten Code ausprobierte, stürzte Python ab.

キャプチャ.JPG

Als ich es nachgeschlagen habe, scheint es, dass die Version von OpenCV einen Effekt hatte. In früheren Versionen von OpenCV wurde anstelle von SimpleBlobDetector_create () eine Funktion namens SimpleBlobDetector () verwendet, und ich denke, dass der Fluss der Codeausführung durch Kopieren und Einfügen → auf die Funktion verweist, die derzeit nicht verwendet wird → Absturz aufgetreten ist. Ich werde. Um dieses Problem zu umgehen, können Sie den Fehler vermeiden, indem Sie SimpleBlobDetector_create () verwenden oder ihn im folgenden Code neu schreiben.

ver = (cv2.__version__).split('.')
if int(ver[0]) < 3:
    detector = cv2.SimpleBlobDetector(params)
else:
    detector = cv2.SimpleBlobDetector_create(params)  

abschließend

Anwendungsbeispiele für die Blob-Erkennung umfassen das Zählen der Anzahl und das Erkennen der Position. Es ist einfach mit OpenCV zu verwenden, daher würde ich gerne etwas anderes als dieses Beispiel ausprobieren.

Danke, dass du bis zum Ende zugesehen hast. Wenn Sie Kommentare oder Vorschläge haben, zögern Sie bitte nicht, uns zu kontaktieren.

Referenz-URL

https://www.programcreek.com/python/example/89350/cv2.SimpleBlobDetector https://www.visco-tech.com/technical/direction-presence/blob/

Recommended Posts

Ausführungsbeispiel für die Blob-Erkennung mit OpenCV
Beispiel für die Verwendung von Lambda
Feature-Erkennung mit opencv (Eckenerkennung)
Vertikaler Turm von Pisa mit OpenCV ~
Beurteilung des hintergrundbeleuchteten Bildes mit OpenCV
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
Ich habe versucht, GrabCut von OpenCV zu verwenden
Beispiel für die Verwendung von Klassenvariablen und Klassenmethoden
Ich habe versucht, Objekte mit Python und OpenCV zu erkennen
Ich habe versucht, den Bildfilter von OpenCV zu verwenden
Versuchen Sie, die Bildkonvertierung mit OpenCV mit Python zu projizieren
Reproduzieren Sie das Ausführungsbeispiel von Kapitel 4 von Hajipata in Python
Reproduzieren Sie das Ausführungsbeispiel von Kapitel 5 von Hajipata in Python
Messung der Ausführungszeit
Nachweis von ArUco-Markern
Beispielprogramm und Ausführungsbeispiel für die gestapelte Generalisierung
Zusammenfassung der Ausführung einer anonymen rekursiven Funktion mit dem Immobilitätspunktkombinator
Vergleich der Farberkennungsmethoden in OpenCV inRange, numpy, cupy
Python> Beispiel für die Verwendung von strip ()> src = '0123456789ABCDEF' / wrk = src.strip ('DEF')
Abnormalitätserkennung durch Auto-Encoder mit Keras [Implementierungsbeispiel für Anfänger]