сортировщик матриц фото jpg
нам нужно эти фото отсортировать в такой последовательности, что бы соседние фото были наиболее похожи
для этого мы уменьшаем фото до размера разрешения 80 точек
затем сортируем их уменьшенные копии по степени сходства
имена фото меняем примерно на такие - фот1 фот2 фот3 фот4 фот5 и т.д
и далее создаём последовательность всех фото jpg в том порядке похожести их матриц который мы получили в результате сортировки
Для решения задачи можно использовать алгоритм, который включает в себя несколько шагов. Вот общий план алгоритма
Загрузка изображений: Считываем все изображения в указанной папке.
Изменение размера изображений: Уменьшаем каждое изображение до размера 80x80 пикселей.
Преобразование изображений в векторы: Преобразуем каждое уменьшенное изображение в вектор (например, с помощью преобразования в градации серого).
Вычисление сходства: Вычисляем степень сходства между всеми парами изображений. Для этого можно использовать, например, метрику косинусного сходства или евклидово расстояние.
Сортировка изображений: Сортируем изображения на основе вычисленного сходства.
Переименование изображений: Переименовываем изображения в формате "фот1.jpg", "фот2.jpg" и так далее.
Сохранение последовательности: Создаем список всех изображений в порядке их схожести.
Вот пример реализации на Python с использованием библиотек PIL для работы с изображениями и numpy для вычислений:
**
import os
from PIL import Image
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
# Путь к папке с изображениями
image_folder = '.'
image_files = [f for f in os.listdir(image_folder) if f.endswith('.jpg')]
# Список для хранения векторов изображений
image_vectors = []
# Изменение размера изображений и преобразование в векторы
for image_file in image_files:
img = Image.open(os.path.join(image_folder, image_file))
img = img.resize((80, 80)) # Изменение размера
img_array = np.array(img).flatten() # Преобразование в вектор
image_vectors.append(img_array)
# Вычисление сходства
similarity_matrix = cosine_similarity(image_vectors)
# Сортировка изображений по сходству
# Получаем индексы сортировки на основе сходства
sorted_indices = np.argsort(-similarity_matrix.sum(axis=1))
# Переименование изображений
for idx, sorted_index in enumerate(sorted_indices):
old_name = image_files[sorted_index]
new_name = f'фот{idx + 1}.jpg'
os.rename(os.path.join(image_folder, old_name), os.path.join(image_folder, new_name))
# Сохранение последовательности
sorted_image_names = [f'фот{idx + 1}.jpg' for idx in range(len(image_files))]
print("Сохраненная последовательность изображений:", sorted_image_names)
примечания к коду:
Убедитесь, что у вас установлены необходимые библиотеки: PIL (или Pillow) и numpy, а также scikit-learn для вычисления косинусного сходства.
Обратите внимание на то, что данный код переименовывает файлы в той же папке, поэтому рекомендуется сделать резервную копию исходных изображений перед запуском скрипта.
Вы можете использовать другие метрики для оценки сходства, в зависимости от ваших требований.
Свидетельство о публикации №125082102589