47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
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
|