À propos de la détection des caractéristiques de l'image à l'aide d'opencv. Cette fois, nous détecterons les coins (courbes, etc.). Deux modèles sont détectés. Voir la page suivante pour les bases Bases du traitement d'images binarisées par Python ⇒ https://qiita.com/jin237/items/04ca3d0b56e10065c4e4
Bien qu'opencv soit utilisé, il existe deux méthodes pour la détection des coins.
On suppose que le bord a un changement de luminosité élevé dans toutes les directions.
#Détection de coin à partir de l'image d'échantillon
import matplotlib.pyplot as plt
%matplotlib inline
import cv2
#Chargement d'image et binarisation
img = cv2.imread("sample.png ",0)
#Détection de coin
corners = cv2.cornerHarris(img, 3,1,0.04)
plt.imshow(corners, cmap='gray')
plt.savefig('gray_pltsample')
img = cv2.imread("sample.png ", 0)
Par, "0" permet la lecture en tant qu'image binarisée en même temps que la lecture de l'image. À l'origine, il pourrait être écrit comme "cv2.cvtColor (img, cv2.COLOR_RGB2GRAY)", mais cette fois j'ai utilisé cette méthode pour rendre le processus plus facile à voir. Il est affiché et enregistré par matplotlib. Aussi,
corners = cv2.cornerHarris(img, 3,1,0.04)
sur, 3 = Plage de pixels proche (taille de bloc) 1 = taille du noyau (ksize) 0,04 = paramètre libre du détecteur Harris (k)
blockSize - La taille de la zone adjacente à prendre en compte lors de la détection des coins. ksize - Taille du noyau de l'opérateur de gradient de Sobel. k - Paramètres libres dans l'équation.
Pour la théorie, voir 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()
Vous pouvez créer des points pour les points caractéristiques. Je l'ai beaucoup réglé cette fois, mais il n'y a pas beaucoup de changement dans le résultat. Si vous concevez ce point rouge, il peut être un peu plus facile à comprendre.
Un coin a été détecté. C'est facile à faire, c'est donc une bonne idée de le comprendre, y compris la théorie. Il y en a d'autres que ceux présentés ci-dessus, donc je les écrirai dans d'autres articles.
Recommended Posts