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 featureimport numpy as npimport matplotlib.pyplot as pltimport matplotlib.image as mpimg#---------- Read Image ----------#img = mpimg.imread('lena_grayscale.png')print type(img)print img.shape, img.dtypeprint 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 MM[:,:] = img[:,:,0]print M.max(),M.min(),M.shapeplt.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 |
