Initial commit
This commit is contained in:
64
Divers/tutoriel37/compare_textures.py
Normal file
64
Divers/tutoriel37/compare_textures.py
Normal file
@@ -0,0 +1,64 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user