simple focus. maybe should std size, and contrast
This commit is contained in:
@@ -58,7 +58,7 @@ def createdb(sqlfile):
|
||||
conn.text_factory=str
|
||||
db.execute('CREATE TABLE list (id INTEGER PRIMARY KEY AUTOINCREMENT,\
|
||||
file TEXT,date INTEGER,portrait NUMERIC, hash TEXT,\
|
||||
width INTEGER,height INTEGER,fingerprint TEXT,\
|
||||
width INTEGER,height INTEGER,fingerprint TEXT,sharpness NUMERIC,\
|
||||
R REAL,G REAL, B REAL, BR REAL, BG REAL, BB REAL)')
|
||||
conn.commit()
|
||||
return
|
||||
@@ -216,12 +216,18 @@ def append_colors(sqlfile):
|
||||
dbh=conn.cursor()
|
||||
db.execute("SELECT file,R FROM list WHERE R IS NULL ORDER BY file")
|
||||
i=0
|
||||
dirname_old=""
|
||||
for row in db:
|
||||
colors=get_colors(row[0])
|
||||
dbh.execute("UPDATE list SET R=?, G=?, B=?, BR=?, BG=?, BB=? \
|
||||
WHERE file=?",(colors[0][0],colors[0][1],colors[0][2],
|
||||
colors[1][0],colors[1][1],colors[1][2],row[0]))
|
||||
print "colors: %(f)s (%(r)s %(g)s %(b)s)" % {'f':row[0], 'r':colors[0][0],
|
||||
filename=" "+os.path.basename(row[0])
|
||||
dirname=os.path.dirname(row[0])
|
||||
if dirname!=dirname_old:
|
||||
dirname_old=dirname
|
||||
filename=row[0]
|
||||
print "colors: %(f)s (%(r)s %(g)s %(b)s)" % {'f':filename, 'r':colors[0][0],
|
||||
'g':colors[0][1], 'b':colors[0][2]}
|
||||
i+=1
|
||||
if (i%50==0):
|
||||
@@ -270,12 +276,18 @@ def append_fingerprints(sqlfile):
|
||||
dbh=conn.cursor()
|
||||
db.execute("SELECT file FROM list WHERE fingerprint IS NULL ORDER BY file")
|
||||
i=0
|
||||
dirname_old=""
|
||||
for row in db:
|
||||
fp=get_fingerprint(row[0])
|
||||
dbh.execute("UPDATE list SET fingerprint=? \
|
||||
WHERE file=?",(fp,row[0]))
|
||||
print " %(f)s" % {'f':row[0]}
|
||||
filename=" "+os.path.basename(row[0])
|
||||
dirname=os.path.dirname(row[0])
|
||||
if dirname!=dirname_old:
|
||||
dirname_old=dirname
|
||||
filename=row[0]
|
||||
i+=1
|
||||
print "%(nr)i %(f)s" % {'f':filename, 'nr':i}
|
||||
if (i%50==0):
|
||||
conn.commit();
|
||||
conn.commit()
|
||||
@@ -333,14 +345,16 @@ def find_fingerprint_nearest(sqlfile,cmp):
|
||||
conn.text_factory=str
|
||||
db1=conn.cursor()
|
||||
if is_listed(db1, cmp):
|
||||
db1.execute("SELECT file,fingerprint,width,height FROM list WHERE file=?",(cmp,))
|
||||
db1.execute("SELECT file,fingerprint,sharpness,width,height FROM list WHERE file=?",(cmp,))
|
||||
for hit1 in db1:
|
||||
fp=int(hit1[1])
|
||||
sp=hit1[2]
|
||||
else:
|
||||
fp=int(get_fingerprint(cmp))
|
||||
|
||||
db1.execute("SELECT file,fingerprint,width,height FROM list ORDER BY file")
|
||||
this=['',sys.maxint]
|
||||
sp=get_sharpness(cmp)
|
||||
print('"%s":0:%f' % (cmp, sp))
|
||||
db1.execute("SELECT file,fingerprint,sharpness,width,height FROM list ORDER BY file")
|
||||
this=['',sys.maxint,0]
|
||||
for i,hit1 in enumerate(db1):
|
||||
if hit1[0] == cmp:
|
||||
continue
|
||||
@@ -348,7 +362,42 @@ def find_fingerprint_nearest(sqlfile,cmp):
|
||||
if similarity<this[1]:
|
||||
this[1]=similarity
|
||||
this[0]=hit1[0]
|
||||
print('"%s":%i' % (this[0], this[1]))
|
||||
this[2]=hit1[2]
|
||||
|
||||
print('"%s":%i:%f' % (this[0], this[1], this[2]))
|
||||
|
||||
def append_sharpness(sqlfile):
|
||||
conn=sqlite3.connect(sqlfile)
|
||||
conn.text_factory=str
|
||||
db=conn.cursor()
|
||||
dbh=conn.cursor()
|
||||
db.execute("SELECT file FROM list WHERE sharpness IS NULL ORDER BY file")
|
||||
i=0
|
||||
dirname_old=""
|
||||
for row in db:
|
||||
sp=get_sharpness(row[0])
|
||||
dbh.execute("UPDATE list SET sharpness=? \
|
||||
WHERE file=?",(sp,row[0]))
|
||||
filename=" "+os.path.basename(row[0])
|
||||
dirname=os.path.dirname(row[0])
|
||||
if dirname!=dirname_old:
|
||||
dirname_old=dirname
|
||||
filename=row[0]
|
||||
i+=1
|
||||
print "%(nr)i %(f)s %(s)f" % {'f':filename, 'nr':i,'s':sp}
|
||||
if (i%50==0):
|
||||
conn.commit();
|
||||
conn.commit()
|
||||
|
||||
def get_sharpness(filename):
|
||||
small_args="convert ( -colorspace gray XXX ( +clone -roll +0+1 ) -compose Difference -composite -shave 1x1 ) \
|
||||
( -colorspace gray XXX ( +clone -roll +1+0 ) -compose Difference -composite -shave 1x1 ) \
|
||||
-compose Plus -composite -format %[fx:mean*1000] info:".split(" ")
|
||||
small_args[4]=filename+'[0]'
|
||||
small_args[19]=filename+'[0]'
|
||||
p=subprocess.Popen(small_args,stdout=subprocess.PIPE)
|
||||
sharpness, err = p.communicate()
|
||||
return float(sharpness.strip())
|
||||
|
||||
def searchdb(sqlfile,needle):
|
||||
conn=sqlite3.connect(sqlfile)
|
||||
@@ -468,10 +517,12 @@ def main():
|
||||
if options.search:
|
||||
print_structure(searchdb(options.sqlfile,options.search))
|
||||
if options.measure:
|
||||
print('Adding colors...')
|
||||
print('Measure colors...')
|
||||
append_colors(options.sqlfile)
|
||||
print('Adding fingerprints...')
|
||||
print('Measure fingerprints...')
|
||||
append_fingerprints(options.sqlfile)
|
||||
#print('Measure sharpness...')
|
||||
#append_sharpness(options.sqlfile)
|
||||
if options.random:
|
||||
print('Random lists...')
|
||||
random_lists(options.sqlfile)
|
||||
|
||||
Reference in New Issue
Block a user