Détecter les contours d'une image avec un filtre de Canny sous python


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:

Detecter les contours d'une image avec un filtre de Canny sous python (lena_grayscale.png)
Detecter les contours d'une image avec un filtre de Canny sous python (lena_grayscale.png)

Detecter les contours d'une image avec un filtre de Canny sous python : sigma=1
Detecter les contours d'une image avec un filtre de Canny sous python : sigma=1

Detecter les contours d'une image avec un filtre de Canny sous python : sigma=3
Detecter les contours d'une image avec un filtre de Canny sous python : sigma=3

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

Image

of