From ab661afffe2e31263b7200fed01766a99cf50c67 Mon Sep 17 00:00:00 2001 From: q Date: Thu, 22 May 2014 18:40:11 +0300 Subject: [PATCH] similar up to threshold --- image_list.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/image_list.py b/image_list.py index 7ad0eb23..515c466 100755 --- a/image_list.py +++ b/image_list.py @@ -381,7 +381,10 @@ def find_fingerprint_similar(opts): def find_fingerprint_nearest(opts): ''' Find nearest match to given file ''' - cmp=os.path.abspath(opts.similarity) + cmp=os.path.abspath(opts.similarity.rsplit(",")[0]) + thr=sys.maxint + if len(opts.similarity.rsplit(","))>1: + thr=int(opts.similarity.rsplit(",",1)[1]) conn=sqlite3.connect(opts.sqlfile) conn.text_factory=str db1=conn.cursor() @@ -399,7 +402,8 @@ def find_fingerprint_nearest(opts): colors=get_colors(cmp)[0] db1.execute("SELECT file,fingerprint,sharpness,width,height,R,G,B FROM list WHERE sharpness > 0 ORDER BY file") - this=['',sys.maxint,0,0,0,0] + this=['',thr,0,0,0,0] + hit1=None for i,hit1 in enumerate(db1): if hit1[0] == cmp: continue @@ -411,9 +415,12 @@ def find_fingerprint_nearest(opts): this[3]=int(hit1[3]) this[4]=int(hit1[4]) this[5]=abs( hit1[5] - colors[0] )+abs( hit1[6] - colors[1] )+abs( hit1[7] - colors[2] ) - if this[0]=='': + if hit1==None: print("No measurements found") sys.exit(1) + if this[1]==thr: + print("No similar images for "+cmp+", up to threshold "+str(thr)) + return file_len=str(max(len(cmp), len(this[0]))) print( ('{: <'+file_len+'} {: >4} {: >4} {: >4} {: ^5}x{: ^5}').format("File","Diff","CDel","Shrp","Wth","Hgt")) print( ('{: <'+file_len+'} {: >4} {: >4} {: >4} {: >5}x{: >5}').format(cmp,"","","%.1f" % sp,dims[0],dims[1])) @@ -595,7 +602,7 @@ def main(): if options.nearestcolor: find_color_nearest(options) if options.similarity!=None: - if os.path.exists(options.similarity): + if os.path.exists(options.similarity.rsplit(",")[0]): find_fingerprint_nearest(options) else: find_fingerprint_similar(options)