File size: 916 Bytes
28f9e35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import cv2
import numpy as np
from sklearn.cluster import KMeans

def segment_image(image_path, k=2, resize_shape=(256, 256)):
    # Charger l'image
    img = cv2.imread(image_path)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # Convertir en RGB
    img = cv2.resize(img, resize_shape)  # Redimensionner l'image

    # Normaliser l'image
    img_normalized = img / 255.0

    # Réduire le bruit
    img_denoised = cv2.GaussianBlur(img_normalized, (5, 5), 0)

    # Aplatir l'image pour l'appliquer à K-means
    img_flat = img_denoised.reshape(-1, 3)

    # Appliquer K-means
    kmeans = KMeans(n_clusters=k, random_state=0).fit(img_flat)
    labels = kmeans.labels_

    # Réorganiser les labels en image
    segmented_img = labels.reshape(resize_shape)

    # Convertir l'image segmentée en niveaux de gris
    segmented_img_gray = (segmented_img * 255).astype(np.uint8)

    return img, segmented_img_gray