Weiter von Ich habe versucht, Objekte aus den Bildern der Steak-Set-Mahlzeiten-ähnlichen Bilderkennung zu sortieren habe ich diesmal versucht, die Bilder im Vergleich zum Histogramm zu gruppieren. Es war.
grouping_image.py
image_dir = "{Verzeichnispfad}"
target_files = os.listdir(image_dir)
files = os.listdir(image_dir)
group_images = {}
for target_file in target_files:
if target_file == '.DS_Store':
continue
#Laden Sie die Bilddatei.
target_image_path = image_dir + target_file
target_image = cv2.imread(target_image_path)
#Generieren Sie Histogrammdaten.
target_hist = cv2.calcHist([target_image], [0], None, [256], [0, 256])
similarity_images = {}
for file in files:
if file == '.DS_Store' or file == target_file:
continue
#Laden Sie die Bilddatei.
comparing_image_path = image_dir + file
comparing_image = cv2.imread(comparing_image_path)
#Generieren Sie Histogrammdaten.
comparing_hist = cv2.calcHist([comparing_image], [0], None, [256], [0, 256])
#Vergleichen Sie die Histogramme, um die Ähnlichkeit der Bilder zu berechnen.
ret = cv2.compareHist(target_hist, comparing_hist, 0)
#Konvertiert das Ergebnis in probabilistische Notation.
probability = ret * 100
#Gibt die Ähnlichkeit aus.
# print("target file: " + target_file, "file: " + file, "similarity: " + str(probability) + "%")
#Die Ähnlichkeit beträgt 90%Gruppieren Sie nur die oben genannten.
if probability > 90:
if len(target_file) not in group_images:
group_images[target_file] = {}
similarity_images[len(similarity_images)] = file
group_images[target_file].update(similarity_images)
#Gruppieren Sie ähnliche Bilder.
similarity_group = {}
for target_images in group_images:
similarity_image = {}
count = 0
#Suchen Sie nach Bildern, die bereits gruppiert sind.
if is_distinct_image(similarity_group, target_images):
for similarity_images in group_images:
if target_images != similarity_images:
distinct_images = {v:k for k, v in group_images[similarity_images].items()}
if target_images in distinct_images:
similarity_image[count] = similarity_images
count = count + 1
if target_images not in similarity_group:
similarity_group[target_images] = {}
similarity_group[target_images].update(similarity_image)
#Gibt das Gruppierungsergebnis aus.
for file in similarity_group:
print file, similarity_group[file]
#Wenn es gruppiert ist, wird False zurückgegeben.
def is_distinct_image(similarity_group, target_images):
for images in similarity_group:
distinct_images = {v:k for k, v in similarity_group[images].items()}
if target_images in distinct_images:
return False
return True
634.jpg {0: '632.jpg', 1: '657.jpg'}
575.jpg {0: '603.jpg', 1: '581.jpg', 2: '659.jpg', 3: '758.jpg', 4: '754.jpg', 5: '629.jpg'}
932.jpg {0: '799.jpg', 1: '659.jpg', 2: '815.jpg', 3: '492.jpg', 4: '921.jpg', 5: '658.jpg', 6: '920.jpg', 7: '974.jpg', 8: '629.jpg', 9: '1018.jpg', 10: '806.jpg', 11: '972.jpg'}
547.jpg {0: '559.jpg', 1: '463.jpg'}
480.jpg {0: '432.jpg'}
389.jpg {0: '432.jpg', 1: '250.jpg', 2: '369.jpg'}
Es wurde in 6 Typen eingeteilt. Die folgenden zwei Gruppen wurden in diejenigen unterteilt, die erfolgreich waren und nehmen wollten.
634.jpg
632.jpg
575.jpg
603.jpg
Darüber hinaus wurden Gurken, Misosuppe und Süßwaren erschwert. Vielleicht liegt der Grund darin, dass ein Bild des gesamten gegrillten Fleischgerichts übertragen wird, und ich denke, dass es davon gezogen wird.
Recommended Posts