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

Published: 11 février 2015

DMCA.com Protection Status

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