Pour détecter les contours d'une image avec un filtre de Canny le plus simple est d'utiliser le module scikit-image (aller ici pour installer le module ), exemple avec l'image Lena:
from skimage import feature
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
#---------- Read Image ----------#
img = mpimg.imread('lena_grayscale.png')
print type(img)
print img.shape, img.dtype
print img[100,200,0],img[100,200,1],img[100,200,2],img[100,200,3]
print img.max(),img.min()
M = np.zeros((img.shape[0],img.shape[1]))
print M
M[:,:] = img[:,:,0]
print M.max(),M.min(),M.shape
plt.imshow(M, cmap = plt.get_cmap('gray'))
plt.title("Lena Picture")
plt.savefig("Lena.png")
#plt.show()
#---------- Apply Canny ----------#
edges = feature.canny(M, sigma=1)
fig, ax = plt.subplots()
ax.imshow(edges, cmap=plt.cm.gray, interpolation='nearest')
#ax.axis('off')
ax.set_title('Canny Edge Detection')
plt.savefig("LenaCanny.png")
#plt.show()
Recherches associées
Liens | Site |
---|---|
scikit-image | scikit-image |
Canny Edge Detection Tutorial | |
Filtre de Canny | wikipedia |
Canny edge detector | scikit-image |
Comparing edge-based segmentation and region-based segmentation | scikit-image |
Straight line Hough transform | scikit-image |