mrgloom 242 Жалоба Опубликовано August 17, 2012 вообщем понадобилось искать точную копию изображения в очень большой базе картинок(просто лежат по папкам), как это можно сделать быстро? т.е. интересует как сделать "уникальный ключ" картинки и как потом всё это организовать(дерево?), чтобы искать быстро. можно тут применить sha1, md5? хотя может этим не заморачиваться, а сделать сразу хотя бы чтобы учитывался кроп, скейл, т.е. была какая либо инвариантность. готовое решение на питоне приветствуется. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано August 17, 2012 всё оказалось довольно легко >>> import hashlib >>> from PIL import Image >>> img= Image.open('C:/1.png') >>> img_hash= hashlib.md5(img.tostring()).hexdigest() остальные вопросы пока остаются. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано August 17, 2012 import os import hashlib import glob from PIL import Image os.chdir("C:/test") #put path to param main_dir= os.getcwd() dir_list=[d for d in os.listdir(os.getcwd()) if os.path.isdir(d)] #too complicated but work img_hash_list= [] for dirs in dir_list: curr_path= main_dir+'\\'+dirs os.chdir(curr_path) for files in glob.glob("*.png"): full_path= curr_path+'\\'+files img= Image.open(full_path) img_hash_list.append(hashlib.md5(img.tostring()).hexdigest()) print img_hash_list Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано August 17, 2012 да, я подумал и надо sqllite прикручивать. еще по теме http://www.liacs.nl/~bthomee/assets/08copy_s.pdf Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах