До сих пор я успешно запускал сравнение imagehash.average_hash(image), а также сравнение np.asarray(image) и генерации EDL для пакетов до 450 изображений.
Но когда я использую 500+ изображений, мой EDL содержит данные, соответствующие совершенно неправильным изображениям друг другу. Таким образом, проблема кроется где-то в данных, которые я передаю в метод генерации EDL.
Еще несколько фактов по этому поводу (которые, честно говоря, меня еще больше смущают):
- метод работает нормально при запуске его из Maya, но при использовании того же Python в PyCharm он дает результаты, которые я только что описал.
- различные методы сравнения (hash и np.asarray) дают примерно одинаковые неверные результаты при запуске на одном и том же. каталог
- помещение только первых 500 или 1000 изображений в этот каталог и запуск обоих приводит к одинаковым результатам для первых 500.
- при запуске с теми же файлами, скопированными в другой каталог, результаты такие же неправильные, но полностью отличаются от результатов в исходном каталоге.
Код: Выделить всё
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
Код: Выделить всё
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
Я получил рекурсивные размеры массивов и dict, а максимум для dict был 70437978, который не должен превышать никаких ограничений, поэтому я не знаю, откуда возникла проблема...
Подробнее здесь: https://stackoverflow.com/questions/798 ... nonsense-o