65 lines
1.8 KiB
Python
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()
|