Comment utiliser Python pour effectuer une segmentation d'images sur des images
La segmentation d'images est une technique couramment utilisée dans le domaine de la vision par ordinateur. Il divise une image en plusieurs zones d'image indépendantes afin que les pixels de chaque zone aient des caractéristiques similaires. La segmentation d'images a une grande valeur d'application dans la reconnaissance, la détection de cibles, le traitement d'images et d'autres applications. Cet article explique comment utiliser Python pour segmenter des images et joindre des exemples de code.
Tout d’abord, nous devons installer la bibliothèque de traitement d’image de Python Pillow. Pillow peut nous aider à charger, traiter et enregistrer des images. Vous pouvez installer Pillow via la commande suivante :
pip install pillow
Après avoir installé Pillow, nous pouvons commencer la pratique de la segmentation d'images. Tout d'abord, nous devons importer les bibliothèques nécessaires :
from PIL import Image from sklearn.cluster import KMeans import numpy as np import matplotlib.pyplot as plt
Ensuite, nous définissons une fonction pour charger l'image et la convertir en tableau :
def load_image(image_path): image = Image.open(image_path) return np.array(image)
Ensuite, nous définissons une fonction pour faire la segmentation de l'image :
def image_segmentation(image, num_segments): height, width, _ = image.shape image_flat = image.reshape((-1, 3)) kmeans = KMeans(n_clusters=num_segments, random_state=0).fit(image_flat) labels = kmeans.labels_ image_segmented = np.zeros_like(image_flat) for segment in range(num_segments): image_segmented[labels == segment] = kmeans.cluster_centers_[segment] image_segmented = image_segmented.reshape((height, width, 3)) return image_segmented
Dans le ci-dessus, nous utilisons l'algorithme KMeans pour regrouper les pixels de l'image et déterminer la zone de segmentation de l'image. Ensuite, nous attribuons chaque pixel au centre du cluster correspondant et générons des résultats de segmentation d'image.
Enfin, nous définissons une fonction pour afficher les résultats de la segmentation d'image :
def show_image(image): plt.imshow(image.astype(np.uint8)) plt.axis('off') plt.show()
Maintenant, nous pouvons combiner les fonctions définies ci-dessus pour mener des expériences de segmentation d'image. Voici l'exemple de code complet :
from PIL import Image from sklearn.cluster import KMeans import numpy as np import matplotlib.pyplot as plt def load_image(image_path): image = Image.open(image_path) return np.array(image) def image_segmentation(image, num_segments): height, width, _ = image.shape image_flat = image.reshape((-1, 3)) kmeans = KMeans(n_clusters=num_segments, random_state=0).fit(image_flat) labels = kmeans.labels_ image_segmented = np.zeros_like(image_flat) for segment in range(num_segments): image_segmented[labels == segment] = kmeans.cluster_centers_[segment] image_segmented = image_segmented.reshape((height, width, 3)) return image_segmented def show_image(image): plt.imshow(image.astype(np.uint8)) plt.axis('off') plt.show() image_path = "image.jpg" num_segments = 4 image = load_image(image_path) image_segmented = image_segmentation(image, num_segments) show_image(image_segmented)
Dans l'exemple ci-dessus, nous avons chargé une image nommée "image.jpg" et l'avons divisée en 4 zones. Enfin, nous montrons les résultats de la segmentation d'images.
Pour résumer, cet article explique comment utiliser Python pour effectuer une segmentation d'images sur des images. Nous avons utilisé la bibliothèque Pillow pour charger et enregistrer des images, l'algorithme KMeans pour la segmentation d'images, et enfin affiché les résultats de la segmentation. J'espère que cet article vous aidera à comprendre les principes et les pratiques de la segmentation d'images.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!