Files
cours-ai-tutorials/Divers/tutoriel37/compare_textures.py
2026-03-31 13:28:59 +02:00

65 lines
1.8 KiB
Python

from skimage import feature
import matplotlib.pyplot as plt
import numpy as np
import cv2
import glob
method_distance=[cv2.HISTCMP_CORREL,
cv2.HISTCMP_CHISQR,
cv2.HISTCMP_INTERSECT,
cv2.HISTCMP_BHATTACHARYYA,
cv2.HISTCMP_HELLINGER,
cv2.HISTCMP_CHISQR_ALT,
cv2.HISTCMP_KL_DIV]
method_lbp=['default',
'ror',
'uniform',
'var']
numPoints=8
radius=3
id_method_distance=6
id_method_lbp=2
textures=['gazon', 'gravier', 'bois']
tab_images=[]
tab_hist=[]
for texture in textures:
print(">>>", "{}.jpg".format(texture))
image=cv2.imread("{}.jpg".format(texture), 0)
if image is None:
quit("Probleme image...")
lbp=feature.local_binary_pattern(image, numPoints, radius, method=method_lbp[id_method_lbp])
hist_ref, _=np.histogram(lbp, normed=True, density=True, bins=2**numPoints, range=(0, 2**numPoints))
tab_images.append(image)
tab_hist.append(hist_ref)
for fichier in glob.glob("textures/*.jpg"):
print("Lecture de", fichier)
frame=cv2.imread(fichier)
if frame is None:
print("Probleme image ...")
continue
cv2.imshow("Image", frame)
gray=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
tab_distance=[]
for id in range(len(tab_hist)):
h=tab_hist[id]
lbp=feature.local_binary_pattern(gray, numPoints, radius, method=method_lbp[id_method_lbp])
hist, _=np.histogram(lbp, normed=True, density=True, bins=2**numPoints, range=(0, 2**numPoints))
score=cv2.compareHist(hist.astype(np.float32), h.astype(np.float32), method_distance[id_method_distance])
tab_distance.append(score)
print(" score {:10}: {:2.6f}".format(textures[id], score))
tab_distance=np.array(tab_distance)
print(" -> texture:", textures[np.argmin(tab_distance)])
key=cv2.waitKey()&0xFF
if key==ord('q'):
quit()