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
Obwohl opencv verwendet wird, gibt es zwei Methoden zur Eckenerkennung.
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')
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.
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()
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.
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