[PYTHON] Feature-Erkennung mit opencv (Eckenerkennung)

Einführung

Informationen zur Erkennung von Bildfunktionen mit opencv. Dieses Mal werden wir Ecken (Kurven usw.) erkennen. Es werden zwei Muster erkannt. Auf der folgenden Seite finden Sie die Grundlagen Grundlagen der binärisierten Bildverarbeitung durch Python ⇒ https://qiita.com/jin237/items/04ca3d0b56e10065c4e4

Lass es uns versuchen

Obwohl opencv verwendet wird, gibt es zwei Methoden zur Eckenerkennung.

Eckenerkennung durch "cv2.cornerHarris"

Angenommen, die Kante hat eine hohe Helligkeitsänderung in alle Richtungen.

#Eckenerkennung aus Beispielbild
import matplotlib.pyplot as plt
%matplotlib inline
import cv2


#Laden und Binärisieren von Bildern
img = cv2.imread("sample.png ",0)
#Eckenerkennung
corners = cv2.cornerHarris(img, 3,1,0.04)
plt.imshow(corners, cmap='gray')
plt.savefig('gray_pltsample')

gray_pltsample.png

img = cv2.imread("sample.png ", 0)

Mit "0" wird das Lesen als binärisiertes Bild gleichzeitig mit dem Lesen des Bildes aktiviert. Ursprünglich könnte es als "cv2.cvtColor (img, cv2.COLOR_RGB2GRAY)" geschrieben werden, aber dieses Mal habe ich diese Methode verwendet, um den Prozess besser sichtbar zu machen. Es wird von matplotlib angezeigt und gespeichert. Ebenfalls,

corners = cv2.cornerHarris(img, 3,1,0.04)

Über, 3 = Nahpixelbereich (Blockgröße) 1 = Kernelgröße (ksize) 0,04 = Harris-Detektor-freier Parameter (k)

blockSize - Die Größe des angrenzenden Bereichs, der beim Erkennen von Ecken berücksichtigt werden soll. ksize - Kernelgröße des Bobel-Gradientenoperators. k - Kostenlose Parameter in der Gleichung.

Die Theorie finden Sie unter Harris Corner Detection.

Eckenerkennung durch "cv2.goodFeaturesToTrack"

import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread('sample.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

corners = cv2.goodFeaturesToTrack(gray,100000000,0.01,10)
corners = np.int0(corners)

for i in corners:
    x,y = i.ravel()
    cv2.circle(img,(x,y),3,255,-1)

plt.imshow(img),plt.show()

gFTT_lenna.png

Sie können Punkte für Feature-Punkte machen. Diesmal habe ich viel eingestellt, aber das Ergebnis ändert sich nicht wesentlich. Wenn Sie diesen roten Punkt entwerfen, ist er möglicherweise etwas einfacher zu verstehen.

schließlich

Eine Ecke wurde erkannt. Es ist einfach zu machen, daher ist es eine gute Idee, es zu verstehen, einschließlich der Theorie. Es gibt andere als die oben vorgestellten, daher werde ich sie in anderen Artikeln schreiben.

Recommended Posts

Feature-Erkennung mit opencv (Eckenerkennung)
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
OpenCV-Funktionserkennung mit Google Colaboratory
Ich habe versucht, Objekte mit Python und OpenCV zu erkennen
Expressionsnachweis mit Yolov5
Versuchen Sie die Kantenerkennung mit OpenCV
[Python] Verwenden von OpenCV mit Python (Basic)
Versuchen Sie es mit OpenCV unter Windows
Echtzeit-Kantenerkennung mit OpenCV
Versuchen Sie es mit der Vorlagenfunktion von Django
Gesichtserkennung mit Python + OpenCV
Versuchen Sie es mit der Entwurfsfunktion von Pelican
Gammakorrektur ohne OpenCV
Verwenden von OpenCV mit Python @Mac
Anime-Gesichtserkennung mit OpenCV
[Bildverarbeitung] Poo-san ist durch Kantenerkennung mit Python und OpenCV nackt!
Lassen Sie uns etwas näher auf den Feature-Point-Matching mit OpenCV eingehen
Vertikaler Turm von Pisa mit OpenCV ~
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
Logoerkennung mit der TensorFlow-Objekterkennungs-API
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
Machen Sie die Rotation der OpenCV-Objekterkennung unveränderlich
Ich habe versucht, GrabCut von OpenCV zu verwenden
Versuchen Sie, die Remote-Debugging-Funktion von PyCharm zu verwenden
Ausreißererkennung mit One Class SVM
Horizontale Linienverarbeitung mit OpenCV-Morphologietransformation
Katzenerkennung mit OpenCV (Modellverteilung)
Gesichtserkennung mit einem Kaskadenklassifikator