J'ai un ensemble de données d'images, où je crée l'histogramme de chaque image, puis je veux les enregistrer dans un fichier, de sorte que pour chaque nouvelle image que j'utilise en entrée, je compare l'histogramme de cette image avec ceux que j'ai déjà dans le fichier et trouve s'ils sont identiques. Le code à ce jour est le suivant:Comparer les histogrammes dans le fichier OpenCV
import numpy as np
import cv2
import os.path
import glob
import matplotlib.pyplot as plt
import pickle
index = {}
#output dic
out = {
1: {},
2: {},
3: {},
}
for t in [1]:
#load_files
files = glob.glob(os.path.join("..", "data", "train", "Type_{}".format(t), "*.jpg"))
no_files = len(files)
#iterate and read
for n, file in enumerate(files):
try:
image = cv2.imread(file)
img = cv2.resize(image, None, fx=0.1, fy=0.1, interpolation=cv2.INTER_AREA)
# features : histograms
plt.hist(img.flatten(), 256, [0, 256], color='r')
plt.xlim([0,256])
plt.legend('histogram', loc='upper left')
plt.show()
# index[file] = hist
# write histograms into file
#compare them and find similarity score
# result_dist = compareHist(index[0], index[1], cv2.cv.CV_COMP_CORREL)
print(file, t, "-files left", no_files - n)
except Exception as e:
print(e)
print(file)
Quelqu'un peut-il me guider à travers cela? Merci!
merci pour votre aide. Il me donne une erreur à 'filenames = glob.glob (os.path.join (racine, obj.folder, extension))', ce nom 'obj' n'est pas défini – joasa
J'ai édité ma réponse pour corriger ce bug – Tonechas
Maintenant je obtenir ces avertissements _UserWarning: Peut-être corrompre les données EXIF. Attendre la lecture de 524288 octets mais seulement 0. Sauter la balise 3 "Saut de balise% s"% (taille, len (données), balise)) _ et ce message d'erreur: ** OSError: le fichier image est tronqué (54 octets non traité)**. Savez-vous ce que cela signifie? – joasa