Bisher habe ich den Vergleich von imagehash.average_hash(image) sowie einen Vergleich von np.asarray(image) und der EDL-Generierung für Stapel von bis zu 450 Bildern erfolgreich durchgeführt.
Aber wenn ich 500+ verwende Bilder, mein EDL enthält Daten, die völlig falsche Bilder miteinander vergleichen. Das Problem liegt also irgendwo in den Daten, die ich in die EDL-Generierungsmethode eingespeist habe.
Noch ein paar Fakten dazu (die mich ehrlich gesagt noch mehr verwirren):
- Die Methode funktioniert gut, wenn sie von Maya aus ausgelöst wird, aber wenn man dieselbe Python in PyCharm verwendet, liefert sie die Ergebnisse, die ich gerade beschrieben habe
- Die verschiedenen Vergleichsmethoden (Hash & np.asarray) erzeugen ungefähr die gleichen falschen Ergebnisse, wenn sie auf derselben ausgeführt werden Verzeichnis
- Wenn Sie nur die ersten 500 oder 1000 Bilder in diesem Verzeichnis ablegen und es auf beiden ausführen, führt dies zu den gleichen Ergebnissen bei den ersten 500.
- Wenn es auf denselben Dateien ausgeführt wird, die in ein anderes Verzeichnis kopiert wurden, sind die Ergebnisse genauso falsch, unterscheiden sich jedoch völlig von denen im ursprünglichen Verzeichnis.
Code: Select all
def get_images_to_use(hashes): # list of the hashes of all images (generated earlier)
repeated_images = [] # list of images that can be repeated
image_indices = {} # Dictionary to map image hash to its index
for i, img_hash in enumerate(hashes):
if img_hash in image_indices:
repeated_images.append(image_indices[img_hash])
else:
image_indices[img_hash] = i
repeated_images.append(i)
return repeated_images
Code: Select all
def get_images_to_use(arrays):# list of the arrays of all images (generated earlier)
repeated_images = [] # list of images that can be repeated
indexed_arrays = [] # list of arrays alread in repeated_images
image_indices = [] # list of the image indices for the arrays in indexed_arrays
for i, img_array in enumerate(arrays):
for j, indexed_array in enumerate(indexed_arrays):
if np.all(img_array== indexed_array):
repeated_images.append(image_indices[j])
break
else:
image_indices.append(i)
indexed_arrays.append(img_array)
repeated_images.append(i)
repeated_images[0] = 0
repeated_images[-1] = len(arrays) -
return repeated_images
Ich habe die rekursiven Größen der Arrays und des Diktats erhalten und das Maximum war 70437978 für das Diktat, das keine Grenzen überschreiten sollte, daher weiß ich nicht, woher das Problem kommt...
Mobile version