mrgloom 242 Report post Posted August 17, 2012 вообщем понадобилось искать точную копию изображения в очень большой базе картинок(просто лежат по папкам), как это можно сделать быстро? т.е. интересует как сделать "уникальный ключ" картинки и как потом всё это организовать(дерево?), чтобы искать быстро. можно тут применить sha1, md5? хотя может этим не заморачиваться, а сделать сразу хотя бы чтобы учитывался кроп, скейл, т.е. была какая либо инвариантность. готовое решение на питоне приветствуется. Share this post Link to post Share on other sites
mrgloom 242 Report post Posted August 17, 2012 всё оказалось довольно легко >>> import hashlib >>> from PIL import Image >>> img= Image.open('C:/1.png') >>> img_hash= hashlib.md5(img.tostring()).hexdigest() остальные вопросы пока остаются. Share this post Link to post Share on other sites
mrgloom 242 Report post Posted 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 Share this post Link to post Share on other sites
mrgloom 242 Report post Posted August 17, 2012 да, я подумал и надо sqllite прикручивать. еще по теме http://www.liacs.nl/~bthomee/assets/08copy_s.pdf Share this post Link to post Share on other sites