Initial commit

This commit is contained in:
2026-03-31 13:28:59 +02:00
commit 7ec43ca17d
314 changed files with 189852 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
# Tutoriel 29
## Segmentation d'image avec l'algorithme des K-moyennes
La vidéo de ce tutoriel est disponible l'adresse suivante:<br>
https://www.youtube.com/watch?v=ytii3XvapRY

View File

@@ -0,0 +1,46 @@
import numpy as np
from matplotlib import pyplot as plt
from sklearn.cluster import KMeans
import cv2
import glob
k=2
ESPACE="HSV"
CH=[0, 2]
size=200
for image in glob.glob('.\images\*.png'):
print("Image:", image)
# Lecture et affichage de l'image
img=cv2.imread(image)
img=cv2.resize(img, (size, size))
cv2.imshow("image", img)
# Changement d'espace colorimétrique
img=cv2.cvtColor(img, eval("cv2.COLOR_BGR2"+ESPACE))
X=img[:, :, CH].reshape(img.shape[0]*img.shape[1], len(CH))
# Graph 2D des couches A et B
if len(CH)==2:
plt.scatter(X[:,0], X[:,1], s=3)#, marker='+')
plt.show()
# Algorithme K moyennes
kmeans=KMeans(n_clusters=k)
#kmeans.fit(X)
pred=kmeans.fit_predict(X)
# Graph 2D des couches A et B après utilisation de l'algorithme K moyennes
if len(CH)==2:
plt.scatter(X[:,0], X[:,1], c=pred, s=3) #10, marker='+')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=50, c='red')
plt.show()
# Affichage du résultat
pred=pred.reshape(img.shape[0], img.shape[1])
pred=pred/(k-1)
cv2.imshow("kmeans", pred)
if cv2.waitKey()&0xFF==ord('q'):
break

View File

@@ -0,0 +1,35 @@
import numpy as np
from matplotlib import pyplot as plt
from sklearn.cluster import KMeans
import cv2
import sys
import glob
min_clusters=2
max_clusters=4
ESPACES=["YCrCb", "HSV", "LAB"]
COUCHES=[[1], [0, 2], [1, 2]]
size=200
for image in glob.glob('.\images\*.png'):
print("Image: {} ".format(image), end='')
tab=np.zeros([(len(ESPACES))*size, (max_clusters-min_clusters+1)*size], dtype=np.float32)
img=cv2.imread(image)
cv2.imshow("image", cv2.resize(img, (2*size, 2*size)))
img=cv2.resize(img, (size, size))
for index in range(len(ESPACES)):
img2=cv2.cvtColor(img, eval("cv2.COLOR_BGR2"+ESPACES[index]))
X=img2[:, :, COUCHES[index]].reshape(img2.shape[0]*img2.shape[1], len(COUCHES[index]))
for k in range(min_clusters, max_clusters+1):
sys.stdout.write('.')
sys.stdout.flush()
kmeans=KMeans(n_clusters=k)
pred=kmeans.fit_predict(X)
pred=pred.reshape(img2.shape[0], img2.shape[1])
pred=pred/(k-1)
tab[index*size:(index+1)*size, (k-min_clusters)*size:(k-min_clusters)*size+size]=pred
sys.stdout.write('\n')
cv2.imshow("kmeans", tab)
if cv2.waitKey()&0xFF==ord('q'):
break